Skip to content

Commit a3ca8d5

Browse files
masaeeduwing328
authored andcommitted
[TypeScript-Fetch] Support for non-JSON body params (#6994)
* Commit leftover snapshot changes * Add logic to deal with non-JSON body params If the spec specifies a list of consumes MIME types, default to the first MIME type in the list instead of "application/json" (the user may still override this by passing "Content-Type" in options.headers). Additionally, only perform explicit JSON serialization if the data type of the body parameter is not "string", or if it is string, only when the content type is "application/json". * Update snapshots
1 parent cb59591 commit a3ca8d5

File tree

4 files changed

+49
-22
lines changed
  • modules/swagger-codegen/src/main/resources/typescript-fetch
  • samples/client/petstore/typescript-fetch/builds

4 files changed

+49
-22
lines changed

modules/swagger-codegen/src/main/resources/typescript-fetch/api.mustache

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,12 @@ export const {{classname}}FetchParamCreator = function (configuration?: Configur
212212
213213
{{/hasFormParams}}
214214
{{#bodyParam}}
215+
{{^consumes}}
215216
localVarHeaderParameter['Content-Type'] = 'application/json';
217+
{{/consumes}}
218+
{{#consumes.0}}
219+
localVarHeaderParameter['Content-Type'] = '{{mediaType}}';
220+
{{/consumes.0}}
216221
217222
{{/bodyParam}}
218223
localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);
@@ -223,7 +228,8 @@ export const {{classname}}FetchParamCreator = function (configuration?: Configur
223228
localVarRequestOptions.body = localVarFormParams.toString();
224229
{{/hasFormParams}}
225230
{{#bodyParam}}
226-
localVarRequestOptions.body = JSON.stringify({{paramName}} || {});
231+
const needsSerialization = (<any>"{{dataType}}" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
232+
localVarRequestOptions.body = needsSerialization ? JSON.stringify({{paramName}} || {}) : ({{paramName}} || "");
227233
{{/bodyParam}}
228234
229235
return {

samples/client/petstore/typescript-fetch/builds/default/api.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,8 @@ export const PetApiFetchParamCreator = function (configuration?: Configuration)
360360
// fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
361361
delete localVarUrlObj.search;
362362
localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);
363-
localVarRequestOptions.body = JSON.stringify(body || {});
363+
const needsSerialization = (<any>"Pet" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
364+
localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || "");
364365

365366
return {
366367
url: url.format(localVarUrlObj),
@@ -562,7 +563,8 @@ export const PetApiFetchParamCreator = function (configuration?: Configuration)
562563
// fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
563564
delete localVarUrlObj.search;
564565
localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);
565-
localVarRequestOptions.body = JSON.stringify(body || {});
566+
const needsSerialization = (<any>"Pet" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
567+
localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || "");
566568

567569
return {
568570
url: url.format(localVarUrlObj),
@@ -1165,7 +1167,8 @@ export const StoreApiFetchParamCreator = function (configuration?: Configuration
11651167
// fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
11661168
delete localVarUrlObj.search;
11671169
localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);
1168-
localVarRequestOptions.body = JSON.stringify(body || {});
1170+
const needsSerialization = (<any>"Order" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
1171+
localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || "");
11691172

11701173
return {
11711174
url: url.format(localVarUrlObj),
@@ -1393,7 +1396,8 @@ export const UserApiFetchParamCreator = function (configuration?: Configuration)
13931396
// fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
13941397
delete localVarUrlObj.search;
13951398
localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);
1396-
localVarRequestOptions.body = JSON.stringify(body || {});
1399+
const needsSerialization = (<any>"User" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
1400+
localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || "");
13971401

13981402
return {
13991403
url: url.format(localVarUrlObj),
@@ -1424,7 +1428,8 @@ export const UserApiFetchParamCreator = function (configuration?: Configuration)
14241428
// fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
14251429
delete localVarUrlObj.search;
14261430
localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);
1427-
localVarRequestOptions.body = JSON.stringify(body || {});
1431+
const needsSerialization = (<any>"Array&lt;User&gt;" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
1432+
localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || "");
14281433

14291434
return {
14301435
url: url.format(localVarUrlObj),
@@ -1455,7 +1460,8 @@ export const UserApiFetchParamCreator = function (configuration?: Configuration)
14551460
// fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
14561461
delete localVarUrlObj.search;
14571462
localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);
1458-
localVarRequestOptions.body = JSON.stringify(body || {});
1463+
const needsSerialization = (<any>"Array&lt;User&gt;" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
1464+
localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || "");
14591465

14601466
return {
14611467
url: url.format(localVarUrlObj),
@@ -1614,7 +1620,8 @@ export const UserApiFetchParamCreator = function (configuration?: Configuration)
16141620
// fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
16151621
delete localVarUrlObj.search;
16161622
localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);
1617-
localVarRequestOptions.body = JSON.stringify(body || {});
1623+
const needsSerialization = (<any>"User" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
1624+
localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || "");
16181625

16191626
return {
16201627
url: url.format(localVarUrlObj),

samples/client/petstore/typescript-fetch/builds/es6-target/api.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,8 @@ export const PetApiFetchParamCreator = function (configuration?: Configuration)
360360
// fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
361361
delete localVarUrlObj.search;
362362
localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);
363-
localVarRequestOptions.body = JSON.stringify(body || {});
363+
const needsSerialization = (<any>"Pet" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
364+
localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || "");
364365

365366
return {
366367
url: url.format(localVarUrlObj),
@@ -562,7 +563,8 @@ export const PetApiFetchParamCreator = function (configuration?: Configuration)
562563
// fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
563564
delete localVarUrlObj.search;
564565
localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);
565-
localVarRequestOptions.body = JSON.stringify(body || {});
566+
const needsSerialization = (<any>"Pet" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
567+
localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || "");
566568

567569
return {
568570
url: url.format(localVarUrlObj),
@@ -1165,7 +1167,8 @@ export const StoreApiFetchParamCreator = function (configuration?: Configuration
11651167
// fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
11661168
delete localVarUrlObj.search;
11671169
localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);
1168-
localVarRequestOptions.body = JSON.stringify(body || {});
1170+
const needsSerialization = (<any>"Order" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
1171+
localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || "");
11691172

11701173
return {
11711174
url: url.format(localVarUrlObj),
@@ -1393,7 +1396,8 @@ export const UserApiFetchParamCreator = function (configuration?: Configuration)
13931396
// fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
13941397
delete localVarUrlObj.search;
13951398
localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);
1396-
localVarRequestOptions.body = JSON.stringify(body || {});
1399+
const needsSerialization = (<any>"User" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
1400+
localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || "");
13971401

13981402
return {
13991403
url: url.format(localVarUrlObj),
@@ -1424,7 +1428,8 @@ export const UserApiFetchParamCreator = function (configuration?: Configuration)
14241428
// fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
14251429
delete localVarUrlObj.search;
14261430
localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);
1427-
localVarRequestOptions.body = JSON.stringify(body || {});
1431+
const needsSerialization = (<any>"Array&lt;User&gt;" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
1432+
localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || "");
14281433

14291434
return {
14301435
url: url.format(localVarUrlObj),
@@ -1455,7 +1460,8 @@ export const UserApiFetchParamCreator = function (configuration?: Configuration)
14551460
// fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
14561461
delete localVarUrlObj.search;
14571462
localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);
1458-
localVarRequestOptions.body = JSON.stringify(body || {});
1463+
const needsSerialization = (<any>"Array&lt;User&gt;" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
1464+
localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || "");
14591465

14601466
return {
14611467
url: url.format(localVarUrlObj),
@@ -1614,7 +1620,8 @@ export const UserApiFetchParamCreator = function (configuration?: Configuration)
16141620
// fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
16151621
delete localVarUrlObj.search;
16161622
localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);
1617-
localVarRequestOptions.body = JSON.stringify(body || {});
1623+
const needsSerialization = (<any>"User" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
1624+
localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || "");
16181625

16191626
return {
16201627
url: url.format(localVarUrlObj),

samples/client/petstore/typescript-fetch/builds/with-npm-version/api.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,8 @@ export const PetApiFetchParamCreator = function (configuration?: Configuration)
360360
// fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
361361
delete localVarUrlObj.search;
362362
localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);
363-
localVarRequestOptions.body = JSON.stringify(body || {});
363+
const needsSerialization = (<any>"Pet" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
364+
localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || "");
364365

365366
return {
366367
url: url.format(localVarUrlObj),
@@ -562,7 +563,8 @@ export const PetApiFetchParamCreator = function (configuration?: Configuration)
562563
// fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
563564
delete localVarUrlObj.search;
564565
localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);
565-
localVarRequestOptions.body = JSON.stringify(body || {});
566+
const needsSerialization = (<any>"Pet" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
567+
localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || "");
566568

567569
return {
568570
url: url.format(localVarUrlObj),
@@ -1165,7 +1167,8 @@ export const StoreApiFetchParamCreator = function (configuration?: Configuration
11651167
// fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
11661168
delete localVarUrlObj.search;
11671169
localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);
1168-
localVarRequestOptions.body = JSON.stringify(body || {});
1170+
const needsSerialization = (<any>"Order" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
1171+
localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || "");
11691172

11701173
return {
11711174
url: url.format(localVarUrlObj),
@@ -1393,7 +1396,8 @@ export const UserApiFetchParamCreator = function (configuration?: Configuration)
13931396
// fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
13941397
delete localVarUrlObj.search;
13951398
localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);
1396-
localVarRequestOptions.body = JSON.stringify(body || {});
1399+
const needsSerialization = (<any>"User" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
1400+
localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || "");
13971401

13981402
return {
13991403
url: url.format(localVarUrlObj),
@@ -1424,7 +1428,8 @@ export const UserApiFetchParamCreator = function (configuration?: Configuration)
14241428
// fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
14251429
delete localVarUrlObj.search;
14261430
localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);
1427-
localVarRequestOptions.body = JSON.stringify(body || {});
1431+
const needsSerialization = (<any>"Array&lt;User&gt;" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
1432+
localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || "");
14281433

14291434
return {
14301435
url: url.format(localVarUrlObj),
@@ -1455,7 +1460,8 @@ export const UserApiFetchParamCreator = function (configuration?: Configuration)
14551460
// fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
14561461
delete localVarUrlObj.search;
14571462
localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);
1458-
localVarRequestOptions.body = JSON.stringify(body || {});
1463+
const needsSerialization = (<any>"Array&lt;User&gt;" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
1464+
localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || "");
14591465

14601466
return {
14611467
url: url.format(localVarUrlObj),
@@ -1614,7 +1620,8 @@ export const UserApiFetchParamCreator = function (configuration?: Configuration)
16141620
// fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
16151621
delete localVarUrlObj.search;
16161622
localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);
1617-
localVarRequestOptions.body = JSON.stringify(body || {});
1623+
const needsSerialization = (<any>"User" !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
1624+
localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || "");
16181625

16191626
return {
16201627
url: url.format(localVarUrlObj),

0 commit comments

Comments
 (0)