Spring Data Rest,SpringFox和JpaRepository自定义查找器

托马斯·埃斯科兰

注意:使用Spring Boot 1.4.2 + SpringFox 2.6.0

嗨,我在@RepositoryRestResource的API文档中遇到了Swagger 2表单的问题。下面的代码工作正常(REST访问正常):

@RepositoryRestResource(collectionResourceRel = "people", path = "people")
public interface PersonRepository extends JpaRepository<Person, Long> {
    Person findByLastName(@Param("name") String name);
}

HATEOAS链接也是正确的:调用URL / api / people / search的结果如下(注意参数“ name”):

{
  "_links": {
    "findByLastName": {
      "href": "http://localhost:8080/api/people/search/findByLastName{?name}",
      "templated": true
    },
    "self": {
      "href": "http://localhost:8080/api/people/search"
    }
  }
}

REST API可以:URL / api / people / search / findByLastName?name = foobar用浏览器执行时返回数据

但是在Swagger中,GET参数类型被解释为“正文”,而不是“查询”,并且表单提交(curl ... -d'foobar'...)在404中失败,尝试提交“名称”作为请求正文。所以我尝试显式设置Swagger,如下所示:

@RepositoryRestResource(collectionResourceRel = "people", path = "people")
public interface PersonRepository extends JpaRepository<Person, Long> {
    @ApiOperation("Find somebody by it's last name")
    @ApiImplicitParams({
        @ApiImplicitParam(name = "name", paramType = "query")
    })
    Person findByLastName(@Param("name") @ApiParam(name = "name") String name);
}

没有成功,尽管在该示例中“ name”已很好地保留为参数名称:-(

GET查询中的主体参数类型

有谁知道如何使Swagger表格起作用?谢谢您的帮助

托马斯·埃斯科兰

就是这样:@Param配置Spring Data REST,而@RequestParam适合Swagger

@RepositoryRestResource(collectionResourceRel = "people", path = "people")
public interface PersonRepository extends JpaRepository<Person, Long> {

    // @Param Spring Data REST : Use @Param or compile with -parameters on JDK 8
    // @RequestParam Swagger : paramType=query cf. $Api*Param

    Person findByLastName(@Param("name") @RequestParam("name") String name);

}

我开心!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Spring Data REST和自定义实体查找(提供的错误类型的ID)

Spring Data Rest自定义参数解析器

Spring Data Rest / Spring Hateoas自定义控制器-PersistentEntityResourceAssembler

如何在Spring Data Rest中添加自定义拦截器(spring-data-rest-webmvc 2.3.0)

使用Spring Data REST的自定义控制器隐藏默认端点

如何在自定义Spring Data Rest控制器中正确处理POST?

在自定义控制器中接受Spring Data REST URI

使用Spring Data Rest @Projection作为自定义控制器中资源的表示

Spring Data Rest - 自定义端点名称

自定义Spring Data Rest @ManyToMany关系处理

Spring Data REST:自定义方法验证

Spring Data REST自定义查询集成

资源上的Spring Data Rest自定义链接

使用 Spring Data Rest 抛出自定义异常

Spring Data Rest:如何在HAL浏览器中公开自定义Rest控制器方法

Spring Data 1.6.0 GA无法通过自定义ID查找实体管理器工厂bean

具有Spring Data Rest功能的自定义Spring MVC HTTP补丁请求

Spring DATA REST-如何使用默认的Spring实现在自定义控制器中将实体转换为资源

spring-data-rest发布的自定义jpa存储库方法

使用Spring Data REST处理自定义异常(i18n)

实现Spring Data存储库的自定义方法并通过REST公开它们

如何自定义Spring Data REST以使用存储库资源的多段路径?

在Spring Boot Data Rest中将自定义端点公开到基本路径

Spring Boot Data Rest JPA-实体自定义创建(用户)

在由MongoDB支持的Spring Data REST存储库中使用自定义ID

Spring Data Rest-自定义Json模式/阿尔卑斯山?

Spring Data Rest将自定义端点添加到特定存储库

spring-data-elasticsearch-注册自定义分析器

在Spring Data Elasticsearch中使用asiifolding过滤器创建自定义分析器