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

Spring REST可分页/查询Swagger中的参数

谷梁凌
2023-03-14

我正在尝试在我的 REST 服务中实现分页。

取1:

public Page<Item> getPagedItems(Pageable pageable)

这是SpringFox / Swagger中的一个已知错误,Swagger页面显示了错误的参数名。另外,我只想要佩奇

第二次:

public Page<Item> getPagedItems(@RequestParam(name="page", required=true) int page, @RequestParam(name="page", required=true) int size)

这给了我正确的参数,但是它不允许我设置参数描述或示例值。

取3:

@ApiImplicitParams({
    @ApiImplicitParam(name="page", value="page description", required=true, example="0", dataType="int"),
    @ApiImplicitParam(name="size", value="size description", required=true, example="10", dataType="int")
})
public Page<Item> getPagedItems(int page, int size)

这还有另一个错误,在这个错误中,例如="0"不起作用,但是除了一个有效的值之外,所有其他值都有效,哈哈。如果我将数据类型更改为字符串,那么它将显示0示例值,但它将允许您在输入框中输入任何内容。还尝试了“0”、“0.0”、“0\0”等。诸如此类的东西。

如果我不设置示例,那么Springfox会抛出一个异常,抱怨没有示例,哈哈。我能做的最接近的事情是两个都放0,两个都放空白。呃。0/10不是一个好的选择,因为0不起作用,但10起作用。

知道如何让0的示例工作吗?Spring Fox似乎没有得到很好的支持,即使是开源,所以GitHub上没有响应。

或者其他有例子和描述的方式?

共有1个答案

谭嘉歆
2023-03-14

我们创建了一个继承的注释并使用它:

 @Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@ApiImplicitParams({
    @ApiImplicitParam(name = "page",  dataTypeClass = int.class,defaultValue = "0", example = "0", paramType = "query", value = "Results page you want to retrieve (0..N)"),
    @ApiImplicitParam(name = "size", dataTypeClass = int.class ,example = "10", paramType = "query", value = "Number of records per page."),
    @ApiImplicitParam(name = "sort", allowMultiple = true, dataTypeClass=String.class, paramType = "query", value = "Sorting criteria in the format: property(,asc|desc). "
            + "Default sort order is ascending. " + "Multiple sort criteria are supported.")  
})
public @interface ApiPagingParams {

}

用法

@ApiPagingParams
@ResponseStatus(HttpStatus.OK)
@GetMapping("/entity") 
ResponseEntity<Page<...>> getSurveyEntityList(@ApiIgnore("see @ApiPagingParams") @PageableDefault(page = 0, size = 10) Pageable pageable,...)
 类似资料:
  • 在记录API时,有没有办法提供可能值的列表?类似于这样:

  • 在我的Zend应用程序中,我正在为移动应用程序编写一个小API。为了方便移动开发者,我使用了Swagger。到目前为止,除了一个GET请求外,一切正常。 当我呼叫/user/messages/{sessionToken}时?numMessages={numMessages} 有人知道我的错误吗? 欢迎任何帮助。 诚挚的问候 罗特曼 更新:按照建议,我将两个参数类型都更改为“查询”并更改了路径: 但

  • 我正在用Swagger 2.0记录一个Rails应用程序,并使用Swagger-UI作为人类可读的文档/沙盒解决方案。 我有一个资源,客户端可以在其中存储任意元数据以供以后查询。根据 Rails 约定,查询将按如下方式提交: Rails将其转换为以下参数: 它可以很容易地用于为数据库生成适当的 子句。 Swagger里有支持这种东西的吗?我想最终让Swagger-UI提供一些方法来修改生成的请求,

  • 我通过compojure-api使用ring-swagger。我有几个查询参数,我正在努力寻找一种方法来向单个查询参数添加描述。我可以添加整个endpoint的摘要,但这还不够。 是否可以使用ing-swagger/compojure-api向单个查询参数添加swagger描述?

  • 我在django中有一个api(Web服务),如下所示:http://127.0.0.1:9000/api/back_office/appointments/days/?branch=1,在swagger中,我想输入名为分支的查询参数,但不起作用(我所有的api都有同样的问题!!)。 以前,我使用旧版本的swagger,对于输入查询参数使用like - param_name语法,但是现在在djan

  • 使用数据库的应用程序,多数情况下都需要使用 “分页” 这个功能。尤其是在 Web 应用程序中,后端的分页查询尤其的普遍。 在以往的使用经验中,一个分页查询,除了能获取到一个列表外,我们通常需要如下几个信息才能在客户端显示出一个完整的翻页条。 当前页数 -- 第几页 页大小 -- 每页有多少条记录 总页数 -- 一共多少页 总记录数 -- 如果不分页,一共有多少条记录 当我们获得了这四条信息后,对于