我擁有適用於Spring Boot應用程序的RESTful API。當我試圖找出涉及嘗試添加自定義媒體類型的單獨問題時,我遇到了這個問題。Swagger-UI無法識別應用程序/ hal + json
嘗試完成此操作後,我在嘗試查看我的API文檔時遇到了HttpMediaTypeNotAcceptable
異常。此例外情況僅在日誌中可見(如果將等級升至DEBUG
)。在瀏覽器上我看到406 undefined
。下面是截圖:
我從春天啓動的日誌中獲取的例外情況是這樣的:
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
和我的自定義媒體類型。那麼,什麼情況是,Spring能根本找不到一個兼容的媒體類型,因爲揚鞭UI在其Accept:
頭而http://localhost:8080/api-docs
售貨application/hal+json
application/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
我猜揚鞭UI應可能會將accept標頭設置爲application/json,application/hal+json
,或者可能使用通配符application/*+json
。
這確實解決了目前的問題。謝謝一堆!我仍然需要弄清楚爲什麼所有其他消息轉換器都被吹走了。 – 2014-11-04 19:53:36
鏈接在當前版本中被打破。有沒有人有當前版本的修復? – 2015-11-30 12:05:42
@MichalPaszkiewicz - 代碼已經顯着改變(應該使用鏈接直接散列,我的道歉)。現在查找位置會花費一些時間,但我不確定當前版本中是否仍存在問題。 – Ron 2015-11-30 16:19:17