我有這段代碼:@RequestMapping(value = "/test", produces = "text/plain")@ResponseBodypublic Object test() { return "true";}我想要的是在這種情況下以“文本/純文本”類型返回“真”,即使我的接受標頭顯示“應用程序/json”或其他任何內容。現在,當我這樣做時,我得到了 406。有沒有簡單的方法來做這樣的事情?我的意思是真的很簡單?我寧愿不更改我的配置文件,而這些文件將不僅僅影響這一種方法。編輯: 我找到了部分解決方案@RequestMapping(value = "/test")@ResponseBodypublic Object test(){ HttpHeaders responseHeaders = new HttpHeaders(); responseHeaders.setContentType(MediaType.TEXT_PLAIN); return new ResponseEntity<>("true", responseHeaders, HttpStatus.OK);}但是有沒有人知道更簡單、更短的解決方案?
2 回答
料青山看我應如是
TA貢獻1772條經驗 獲得超8個贊
對于更靈活的設置,您可以刪除produces = "text/plain"并添加headers ="Accept=application/json". 見Baeldung文章:
映射由控制器方法生成的媒體類型值得特別注意——我們可以通過上面介紹的@RequestMapping headers 屬性根據它的 Accept 標頭映射請求:
@RequestMapping(
value = "/ex/foos",
method = GET,
headers = "Accept=application/json")
@ResponseBody
public String getFoosAsJsonFromBrowser() {
return "Get some Foos with Header Old";
}
這種定義 Accept 頭的方式的匹配是靈活的——它使用 contains 而不是 equals,所以像下面這樣的請求仍然可以正確映射:
curl -H "Accept:application/json,text/html" http://localhost:8080/spring-rest/ex/foos
添加回答
舉報
0/150
提交
取消
