我正在嘗試使用Spring Boot構建微服務。SpringBoot RestController通用POST類型
我有一個後端API接收ResponseEntity POST請求並處理它(保存到數據庫等)。數據是自創類的對象。
現在我有一個頂級API(處理身份驗證,..)。最終用戶將通過這個頂級API與後端服務進行通信。所以這個API基本上只需將所有請求轉發到右後端API。
在這個頂端的API中,我不想包含所有的類(例如在這種情況下的Data類),我寧願將它作爲String json數據或其他東西發送。所以我試過這個:
@RequestMapping(method = RequestMethod.POST, value="/data")
ResponseEntity<String> createUnit(@RequestBody String data) {
URI uri = util.getServiceUrl("dataservice");
String url = uri.toString() + "/data";
ResponseEntity<String> result = restTemplate.postForEntity(url, data, String.class);
return new ResponseEntity<String>(result.getBody(), HttpStatus.OK);
}
但是這會導致org.springframework.web.client.HttpClientErrorException: 415 Unsupported Media Type
。
所以我的問題是,有沒有辦法將這些請求轉發到我的後端,而無需在我的API中包含所有的對象類?我認爲這應該是可以的,因爲這與Web瀏覽器以json格式發送請求時不知道數據實際是什麼類型的對象時相同。
後端處理是這樣的:
你不需要返回'ResponseEntity '。直接使用數據。這會將數據序列化爲Json。如果需要,你可以使用Jackson轉換器。如果您需要公共返回類型,請使用基類作爲返回類型 –
@ViswanathLekshmanan底層API還會發送匹配的「HttpStatus」代碼,例如,當沒有找到Data對象時爲'404',或者成功刪除時爲'204'等。確定HttpStatus代碼的邏輯是使用這些底層API,並且不應該發生在頂層。這就是爲什麼我使用'ResponseEntity'發送數據。 – Kaj