注意:Spring Boot 1.4.2 + SpringFox2.6.0を使用します
こんにちは。@ RepositoryRestResourceを介したAPIドキュメントのSwagger2フォームで問題が発生しています。以下のコードは正常に機能します(RESTアクセスOK):
@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は、ブラウザーで実行するとデータを返します
しかし闊歩でGETのパラメータの型は、代わりに「クエリ」の「体」として解釈され、フォーム送信(カール... -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」がパラメータ名としてフォームに適切に保持されているにもかかわらず、成功しませんでした:-(
そのSwaggerフォームを機能させるために何ができるか知っている人はいますか?あなたの助けのためのThx
これはそれです:@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]
コメントを追加