簡體   English   中英

openapi-generator 無法處理狀態碼 204

[英]openapi-generator can't handle status code 204

使用 npm package "@openapitools/openapi-generator-cli": "^2.4.25",當我的 Z8A5DA52ED12644727D359E70C0A58 返回狀態代碼時,我收到Json-Parse -Error。

查看生成的代碼return new runtime.JSONApiResponse(response, (jsonValue) => TaskFromJSON(jsonValue)); 總是為所有響應的狀態代碼調用。

如何在不更改生成代碼的情況下解決此問題?

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));
    }

好的,目前我通過以下中間件修復了它:

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);
    }
}

然后我將中間件注入客戶端:

const config = new Configuration({
    basePath: apiGateway + '/api/myapi',
    middleware: [new NoContentMiddleware()]
});

使用客戶端:

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");
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM