1

Spring Boot アプリケーション用の RESTful API があります。カスタムメディアタイプを追加しようとすることに関連する別の問題を理解しようとしていたときに、これに遭遇しました。

これを実行しようとした後HttpMediaTypeNotAcceptable、API ドキュメントを表示しようとすると例外が発生しました。この例外は、ログにのみ表示されます (レベルを に上げた場合DEBUG)。ブラウザに が表示されます406 undefined。スクリーンショットは次のとおりです。

ここに画像の説明を入力

Spring Boot のログから得られる例外は次のとおりです。

2014-11-04 10:08:26.189 DEBUG 5496 --- [nio-8080-exec-9] .w.s.m.s.DefaultHandlerExceptionResolver : Resolving exception from handler [public org.springframework.http.ResponseEntity<com.wordnik.swagger.model.ResourceListing> com.mangofactory.swagger.controllers.DefaultSwaggerController.getResourceListing(java.lang.String)]: org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation

問題の根本は、既存の生産可能なメディア タイプが上書きされることです。

上記のコードがない場合、リストには次のものが含まれます。

  • application/hal+json
  • application/json;charset=UTF-8
  • application/*+json;charset=UTF-8.

私の変更により、リストにはapplication/hal+json私のカスタム メディア タイプのみが含まれます。application/jsonしたがって、Swagger UIのAccept:ヘッダーにhttp://localhost:8080/api-docsベンドがあるため、Spring は互​​換性のあるメディア タイプをまったく見つけることができませんapplication/hal+json(curl を使用して確認しました)。

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
X-Application-Context: application
Content-Type: application/hal+json
Transfer-Encoding: chunked
Date: Tue, 04 Nov 2014 16:56:57 GMT

Swagger UI はおそらく accept ヘッダーを に設定するapplication/json,application/hal+jsonか、または のようなワイルドカードを使用する必要があると思いapplication/*+jsonます。

4

1 に答える 1