web-dev-qa-db-ja.com

Springfox Swagger-UIを追加しましたが、機能しません。何が欠けていますか?

ここの指示に従ってください:

http://www.baeldung.com/swagger-2-documentation-for-spring-rest-api

これらの依存関係をプロジェクトに追加しました。

compile "io.springfox:springfox-swagger2:2.7.0"
compile "io.springfox:springfox-swagger-ui:2.7.0"

springFoxSwaggerを次のように構成しました。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }
}

しかし、SwaggerUIが有効になっていないようです。私は試した:

そして私が得るのは:

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Mon Sep 11 09:43:46 BST 2017
There was an unexpected error (type=Method Not Allowed, status=405).
Request method 'GET' not supported

そして私が見るログに:

2017-09-11 09:54:31.020  WARN 15688 --- [nio-8080-exec-6] o.s.web.servlet.PageNotFound             : Request method 'GET' not supported
2017-09-11 09:54:31.020  WARN 15688 --- [nio-8080-exec-6] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved exception caused by Handler execution: org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported

http:// localhost:8080/swagger-resources 戻り値:

[{"name": "default",
  "location": "/v2/api-docs",
  "swaggerVersion": "2.0"}]

何が足りないのですか?

4
pupeno

/ {var}の形式のパス変数を持つリクエストマッピングを持つエンドポイントがあったため、この問題が発生しました。これは、GETとPOSTエンドポイント、つまりGET/{var}とPOST/{var}ブロックのswagger-uiの両方の問題であることがわかりました。パスをより具体的にしたので、swagger-uiが機能するようになりました。

https://github.com/springfox/springfox/issues/1672 からの引用

Springが変数swaggerが1つしかない単純なパスを見つけた場合、URLをインターセプトすることはできません。

コメントでさまざまなアイデアを調査して見つけました。

4
StanislavL

コントローラレベルで(_@RestController\@Controller_アノテーションの後に)@RequestMapping("/")を追加すると、_Request method 'GET' not supported_の問題を取り除くのに役立ちます。 Dhermannsの提案に感謝します

2

私もこれに遭遇しました、そして問題は私たちがパスマッピング(したがって「/」へのマッピング)のないコントローラーを持っていたということでした。これは、swagger-uiリソースへのリクエストをブロックしていました。

1
fpezzini

コントローラレベルで@RequestMapping("/")を追加します。動作します。

0
dean deng

結論:Mavenリポジトリ${user_home}/.m2/repository/io/springfox/springfox-swagger-ui/2.9.2の下にjarファイルがないことがわかりました。以下の手順の後、すべて問題ありません。

次の手順でこの問題を解決しました。

  • ${user_home}/.m2/repository/io/springfox/springfox-swagger-ui/2.9.2に移動します
  • 2.9.2の下のファイルが完全であるかどうかを調べます。不足しているファイルがある場合は、2.9.2ディレクトリ全体を削除します。
  • intellijideaでreimport all maven projectsを実行する

私の春のブートバージョンは2.2.2です。

0
iengchen

闊歩の問題が発生しました/swagger-ui.htmlリクエストメソッド 'get'サポートされていません\リクエストメソッド 'get'サポートされていません。\ supportedmethods post

問題を解決できました

私のコントローラーでは、API @RequestMapping()にパス情報がありません。以下のような提供されたパス修正-@ RequestMapping(value = '/ v1/createAnalytic')

0
Aswani