我認爲最好的方法是創建一個通用對象RestResponse,其中包含通用的有效載荷。然後有一個能夠爲您的有效載荷創建正確響應的工廠。
RestResponse:
public class RestResponse<T> {
private int responseCode;
private T payload;
public RestResponse() {
}
public RestResponse(int responseCode) {
this.responseCode = responseCode;
}
public T getPayload() {
return payload;
}
public void setPayload(T payload) {
this.payload = payload;
}
}
廠:
@Component
public class RestResponseFactory {
public <T> ResponseEntity<RestResponse<T>> newRestResponse(HttpStatus status) {
return newRestResponse(null, status);
}
public <T> ResponseEntity<RestResponse<T>> newRestResponse(T resource, HttpStatus status) {
RestResponse<T> response = new RestResponse<T>();
response.setResponseCode(status.value());
response.setPayload(resource);
return new ResponseEntity<RestResponse<T>>(response, status);
}
}
然後在您休息控制器,你應該能夠使用工廠來生成有效載荷。
ResponseEntity<RestResponse<MyRessource>> response =
responseFactory.newRestResponse(new MyRessource("SomeData"), HttpStatus.CREATED);
這將允許您生成任意對象以下控制器響應:
@Controller
@EnableAutoConfiguration
public class MyRessourceController {
@ResponseBody
@RequestMapping(value = "/dosomething", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
ResponseEntity<RestResponse<MyRessource>> dosomething() {
ResponseEntity<RestResponse<MyRessource>> response =
responseFactory.newRestResponse(new MyRessource("SomeData"), HttpStatus.CREATED);
return response;
}
}
回報'使用'Iterateable' ResponseEntity';) – emotionlessbananas