我使用Spring和RepositoryRestResource创建REST服务器。我将图像名称存储在数据库中,并在其余响应中返回。我想发回整个网址而不仅仅是图片名称。
例如,在本地运行时,响应应为:
{
image: 'http://localhost:8080/img/products/1.jpg'
}
并且在部署到生产时,响应应该是
{
image: 'http://prod-server.com/img/products/1.jpg'
}
我目前得到的是:
{
image: '1.jpg'
}
代码正是这里的内容:https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-data-rest,除了我有自己的模型
答案 0 :(得分:0)
我刚遇到同样的问题,并了解到可以使用ResponseBodyAdvice:
@RestControllerAdvice
public class ResponseAdvice implements ResponseBodyAdvice {
@Override
public boolean supports(MethodParameter returnType, Class converterType) {
return returnType.getParameterType().isAssignableFrom(ResponseEntity.class);
}
@Override
public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
return body; // You can modify and return whatever you want.
}
}
Body对象包含来自rest endpoint的返回类型,您可以根据需要进行转换并对其进行修改。