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

如何在Java jersey Swagger UI中添加自定义ApiResponse

濮阳赞
2023-03-14

我正在使用Swagger UI框架来记录API。我有的API之一是

@GET
@Path("/books/count")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "Get total book count in system")
@ApiResponses(value=@ApiResponse(code = 200, message = "Successful operation", response=**need custom response here**))
public Response getBookCount(){
int count = bookService.getCount();
JSONObject jsonObj = new JSONObject();
jsonObj.put("Count", count);

return Response.status(Status.OK).entity(jsonObj.toString()).build();
}

上面的API返回一个具有“count”字段的Json对象。那么,有没有可能有一个大摇大摆的用户界面响应,类似于-

@apiResponses(value=@apiResponse(代码=200,message=“成功操作”,response={“count”:“int”}))

共有1个答案

倪举
2023-03-14

您可以通过使用泛型类型或对象来做到这一点。对我来说,对象更有意义。

请尝试使用下面的swagger.yml,由此生成的代码将是泛型类型。

openapi: 3.0.1
info:
  title: Swagger Bookstore
  description: 'This is a sample server Bookstore server.'
  version: 1.0.0
servers:
- url: http://bookstore.swagger.io/v2
tags:
- name: book
  description: Everything about your Books
paths:
  /books/count:
    get:
      tags:
      - book
      summary: Get Books count
      description: Fetch total book count
      operationId: getBookCount
      responses:
        200:
          description: successful operation
          content:
            application/json:
              schema:
               $ref: '#/components/schemas/ApiResponse'
        400:
          description: Invalid response
          content: {}
components:
  schemas:
    ApiResponse:
      type: object
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string
        response: 
          type: object

您可以看到ApiResponse有一个字段名response作为对象是泛型类型。哪个可以保存您指定的任何类型?

response: 
   type: object
@ApiResponses(value=@ApiResponse(code = 200, message = "Successful operation", response={}))
 类似资料:
  • 是否有一个时间格式来指定这样的日期序列到轴在D3和v4?

  • 我想在向url发送请求时添加假用户代理。但它并没有添加假useragent,而是使用默认的useragent。

  • Thymeleaf有许多有用的实用程序,如或。我试图添加一个自定义的,但不知道如何注册这一点。

  • 问题内容: 我正在使用Twitter Bootstrap添加图标,没有问题。他们有很多选择。 http://twitter.github.com/bootstrap/base- css.html#icons 但是,我找不到菜单项之一的适当图标。关于“汽车”。我想要的是我想添加我的自定义图标。我怎样才能做到这一点? 问题答案: 您可以通过在自己的类(如)中定义图标来创建自己的图标: 当然要记住使用前

  • 问题内容: 背后有不同的原因,但是我想知道如何简单地向JSX中的元素添加自定义属性? 问题答案: 编辑:更新以反映React 16 React 16本机支持自定义属性。这意味着向元素添加自定义属性现在就像将其添加至函数一样简单,如下所示: 先前的答案(第15和更早版本) 当前不支持自定义属性。有关更多信息,请参见此未解决的问题: 解决方法是,您可以在中执行以下操作:

  • 在我的一个Rest API调用中,我需要添加标题“Authorization:partner_id:timestamp signature” 如果公司名称是静态字符串,则可以对其进行硬编码,其中作为合作伙伴的id是查询参数的一部分,用户输入它,签名计算为sha256(机密,密码)。消化编码('base64') 我现在看到只有api_密钥,而且在swagger ui中允许基本授权,我如何以及在哪里实