typescript - openapi-generator kan ikke håndtere statuskode 204
Når jeg bruker npm-pakken "@openapitools/openapi-generator-cli": "^2.4.25", får jeg en Json-Parse-feil når API-en min returnerer statuskode 204 (uten innhold).
Når man ser på den genererte koden, blir return new runtime.JSONApiResponse(response, (jsonValue) => TaskFromJSON(jsonValue)); alltid kalt for alle returnerte statuskoder.
Hvordan kan jeg fikse dette uten å endre den genererte koden?
async getTasksRaw(requestParameters: GetTaskByIdRequest, initOverrides?: RequestInit): Promise<runtime.ApiResponse<Task>> {
if (requestParameters.taskId === null || requestParameters.taskId === undefined) {
throw new runtime.RequiredError('taskId','Required parameter requestParameters.taskId was null or undefined when calling getTaskById.');
}
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
const response = await this.request({
path: `/tasks/{taskId}`.replace(`{${"taskId"}}`, encodeURIComponent(String(requestParameters.taskId))),
method: 'GET',
headers: headerParameters,
query: queryParameters,
}, initOverrides);
return new runtime.JSONApiResponse(response, (jsonValue) => TaskFromJSON(jsonValue));
}
Svar #1
Ok, for øyeblikket har jeg fikset det med følgende mellomvare:
import { HttpExceptionFromJSON, Middleware, ResponseContext } from './my-client';
/**
* Workaround
*/
export default class NoContentMiddleware implements Middleware {
public post?(context: ResponseContext): Promise<Response | void> {
if (context.response.status === 204) {
throw {
status: 204
};
}
return Promise.resolve(context.response);
}
}
Deretter injiserer jeg mellomvaren til klienten:
const config = new Configuration({
basePath: apiGateway + '/api/myapi',
middleware: [new NoContentMiddleware()]
});
ved å bruke klienten:
public async test(){
try{
var myentity = await this.callAPI();
catch(e:any){
switch(e.status){
case 204:
console.log("no content");
break;
default:
console.log("unexpected error");
}
}
}
