如果請求接受標頭的型別為 application/json,我希望能夠發送 JSON 串列(如 List),但如果請求標頭的型別為 application/avro,則以位元組陣列(avro 格式)發送它。這應該用于相同的 REST 端點,例如 /something/employee。我可以有相同的方法但不同的回傳型別,Spring Boot 會查看接受頭并正確決定呼叫哪個方法嗎?
回傳型別應該是什么?它可以是沒有任何型別的 ResponseEntity 嗎?
uj5u.com熱心網友回復:
您可以將您的方法定義為簡單地回傳一個裸ResponseEntity并檢查Accept標頭的值以確定回傳什么
@GetMapping("/something")
public ResponseEntity getContentNegotiateResponse(@RequestHeader("Accept") String accept) {
SomeObject someObject = new SomeObject();
if (accept.equalsIgnoreCase(APPLICATION_JSON_VALUE)) {
return ResponseEntity.of(Optional.of(someObject));
} else if (accept.equalsIgnoreCase("application/avro")) {
byte[] value = "SomeData".getBytes(StandardCharsets.UTF_8);
return ResponseEntity.of(Optional.of(value));
} else {
return ResponseEntity.badRequest().build();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/489910.html
上一篇:如何使用WebTau為RESTAPI測驗指定基本URL
下一篇:短物體版本的RESTAPI命名
