当前位置: 首页 > 知识库问答 >
问题:

如何在swagger CodeGen中处理多个响应/返回类型(空的204,非空的400等)?

薛扬
2023-03-14

我使用的是openapi 3.0.2版。

我有以下规范描述了我的响应:

responses:
    '201':
        description:  
            Created
    '400':
        description: Bad request
        content:
            application/json:
                schema:
                    $ref: '#/components/schemas/Error'
    '404':
        description: The resource could not be found.
    '500':
        description: The request failed due to an unexpected server error.

对于大多数响应代码,我不返回任何响应体,但是对于400响应代码,我想返回错误对象:

Error:
    type: object
    properties:
        code:
            type: string
        message:
            type: string
    required:
        - code
        - message

当我为这个endpoint生成Java服务器代码时,方法的返回类型是responseEntity ,这意味着我不能返回错误对象?

似乎与这些问题类似:

https://groups.google.com/forum/#!topic/swagger-swaggersocket/ygvja2m5gy0

https://github.com/swagger-api/swagger-codegen/issues/7743

https://github.com/swagger-api/swagger-codegen/issues/4398

我不知道这是不是已经修复的东西,或者有没有什么解决办法?

共有1个答案

袁晟
2023-03-14

我使用了下面描述的方法来解决这个问题:

@Override
public ResponseEntity<Void> deleteThing(...)
{
        try {
                myService.deleteThing(...);
                return new ResponseEntity<>(HttpStatus.NO_CONTENT);
        } catch (MyException e) {
                    throw new ResponseStatusException(HttpStatus.NOT_FOUND, e.getMessage());
        }
        catch (MyOtherException e) {
                    throw new ResponseStatusException(HttpStatus.BAD_REQUEST, e.getMessage());
        }
}
 类似资料:
  • 我正在尝试调用FlickR API,但由于response.body()返回null而遇到困难。 我不确定它是否与我的JSON/POJO映射相关,但我无法弄清楚当我调用Flickr时如何访问来自改版的响应。我知道我的调用已经成功完成,因为我实际上能够通过日志拦截器查看JSON。 型号: 活动 }

  • 为了概括这个问题,我借用了Zelenski CS课堂讲义中的材料。而且,这与我的具体问题有关,因为几年前我从另一位讲师那里学习了C语言的这种方法。讲义在这里。我对C的理解很低,因为我偶尔使用它。基本上,我需要编写一个程序的几次,我回到课堂材料,找到类似的东西,然后从那里开始。 在本例(第4页)中,Julie正在字符串函数中使用递归算法查找单词。为了减少递归调用的数量,她添加了一个决策点。 为了增加

  • 我想使用GooglePlaceAPI和自动完成视图。我有开发者控制台上的android和浏览器密钥。但当我尝试这些键API时,它返回空响应。 Logcat: D/Volley:[2651]a.a:请求的HTTP响应= 我的代码: 在onpostexecute日志中: 我是新来的google地方api,请帮我找到什么是错误的。

  • 我有一个Restendpoint,如果没有产品,它将返回204,以及以下通用角度服务: 和 但是,当服务生成 204 代码时,我收到以下错误: TypeError:无法读取null的属性“status” 这怎么可能发生?如果 API 以 204 响应,为什么整个响应为空?

  • 但邮差回信说: 知道为什么或如何进一步调试它吗?Spring data-elasticsearch在做我不明白的事情吗? 我应该期待这样的事情: