私はそれを行う最善の方法は、ジェネリックをペイロードとして含む汎用オブジェクト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);
これを使用すると、以下のコントローラーを使って任意のオブジェクトとの応答を生成することができます: `Iterateable`を使用して
@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;
}
}
リターン' ResponseEntity';) – emotionlessbananas