Spring REST: создайте собственный ответ для специального возвращаемого значения

Я хотел бы добавить сквозную стратегию, которая преобразует определенные возвращаемые типы методов Spring @RestController в другой объект ответа.

Учитывая, что у меня есть интерфейс

interface AsyncResult<T> {
  public CompletableFuture<T> getResult();
}

я хотел бы написать

@RequestMapping(...)
public AsyncResult getAsyncResult() { return ... }

и создать фактический ответ в какой-то стратегии, например.

public ResponseEntity convert(AsyncResult result) { 
  if(result.getResult().isDone()) {
    return new ResponseEntity(result.get(), HttpStatus.OK);
  } else {
    // headers e.g. AsyncResult: true, Poll-Location: /result/result-id
    return new ResponseEntity(HttpStatus.ACCEPT, headers);
  }
}

Я предполагаю, что это возможно, зарегистрировав что-то похожее на @ExceptionHandler?


person Peter Rietzler    schedule 30.03.2017    source источник
comment
вы можете напрямую отправить MyCustomResponse с помощью аннотации @ResponseBody вверх по течению.   -  person Vaibs    schedule 31.03.2017
comment
@Vaibs Это не то, чем я хочу заниматься. Я отредактирую вопрос, чтобы дать вам лучшее представление о моих потребностях   -  person Peter Rietzler    schedule 31.03.2017


Ответы (1)


Похоже, ответ заключается в реализации org.springframework.web.method.support.HandlerMethodReturnValueHandler

person Peter Rietzler    schedule 09.05.2017