1. response
import lombok.Data;
@Data
public class Response<T> {
private Integer
status;
private T data;
private Response(Integer
status, T data) {
this.status = status;
this.data = data;
}
public static
<T>
Response<T> createResponse(Integer
status, T data) {
return new
Response<>(status, data);
}
}
2.config
import java.util.HashMap;
import java.util.List;
import com.sunginfo.assets.model.Response;
import
org.springframework.context.annotation.Configuration;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import
org.springframework.http.converter.HttpMessageConverter;
import
org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import
org.springframework.http.server.ServerHttpRequest;
import
org.springframework.http.server.ServerHttpResponse;
import
org.springframework.web.bind.annotation.RestControllerAdvice;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import
org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
@Configuration
public class GlobalReturnConfig {
@RestControllerAdvice
static class
ResultResponseAdvice implements
ResponseBodyAdvice<Object> {
@Override
public boolean supports(MethodParameter
returnType, Class<? extends
HttpMessageConverter<?>>
converterType) {
return
true;
}
@Override
public Object beforeBodyWrite(Object body,
MethodParameter returnType, MediaType selectedContentType,
Class<?
extends
HttpMessageConverter<?>>
selectedConverterType, ServerHttpRequest request,
ServerHttpResponse response)
{
if (body
instanceof HashMap) {
HashMap<?,
?> map = (HashMap<?,
?>) body;
return
Response.createResponse((int) map.get("status"),
String.format("%s %s", map.get("error"), map.get("path")));
}
return
Response.createResponse(200, body);
}
}
@Configuration
public class WebConfig
extends WebMvcConfigurationSupport {
@Override
public void
configureMessageConverters(List<HttpMessageConverter<?>>
converters) {
super.configureMessageConverters(converters);
converters.add(0, new MappingJackson2HttpMessageConverter());
}
}
}
3.controller
@CrossOrigin("*")
@RestController
public class AccountController {
@GetMapping("/api/v1/accounts")
public
List<Account> getAllAccounts()
{
return accountRepository.findAll();
}
@GetMapping("/api/v1/accounts/test1")
public
ResponseEntity<String> getTest1()
{
return ResponseEntity.ok("account");
}
@GetMapping("/api/v1/accounts/test2")
public
ResponseEntity<Integer> getTest2()
{
return ResponseEntity.ok(2);
}
}
加载中,请稍候......