接口代码:
@GetMapping("/me") public User querySelfUserInfo() { return userService.querySelfUserInfo() .orElse(null); }
查询用户信息,查不到就直接返回null
。我想要返回null
的时候前端接收到的是{}
。大家伙是怎么做的?
jackson 和 fastjson 我都配置过了,实现不了。
或者是大家在做查询的时候,查不到数据是如何返回的?
![]() | 1 limuyan44 2019-07-03 15:43:31 +08:00 via Android 我刚写了个 demo,fastjson 默认是可以的,jackson 默认的确实不行,你把 jackson 换成 fastjson 就行了。 |
![]() | 2 limuyan44 2019-07-03 15:46:08 +08:00 via Android 实际开发中,大部分接口会类似{ code:,data:}这种格式,而不是直接返回数据。 |
3 warcraft1236 2019-07-03 15:50:32 +08:00 { "code": "", "data": "", "message":"", "extra":"" } 一般都返回这种格式的吧,数据都是塞到 data 下边 |
4 AlbertChen 2019-07-03 17:09:05 +08:00 有方法,但是不建议这样搞 @RestControllerAdvice public class RespVoAdvice implements ResponseBodyAdvice<Object> { @Override public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { if (body == null) { return "{}" } return body; } } |
5 tudouxiong 2019-07-03 18:41:34 +08:00 via Android 像 2 楼说的,封装结果类 |
![]() | 6 jamesxu 2019-07-03 19:25:41 +08:00 via iPhone 最简单的就是 orElse(new User()) |
![]() | 7 jamesxu 2019-07-03 19:26:17 +08:00 via iPhone 没看清楚,可以忽略 |
![]() | 8 itning 2019-07-03 20:14:31 +08:00 @GetMapping(value = "/", produces = {MediaType.APPLICATION_JSON_UTF8_VALUE}) public ResponseEntity<?> index() { Optional<User> userOptiOnal= userService.querySelfUserInfo(); if (userOptional.isPresent()) { return ResponseEntity.ok(userOptional.get()); } else { return ResponseEntity.ok("{}"); } } |
![]() | 9 itechify PRO Result<T>封装对象返回 |
10 johnniang 2019-07-03 20:43:37 +08:00 via Android 不应该直接返回 404 status 么 |
![]() | 11 allanzhuo 2019-07-03 21:06:00 +08:00 via Android 楼上说的对,一般都是封装结果类 |
![]() | 12 maowu 2019-07-03 21:14:20 +08:00 via Android ResponseEntity.notFount().build() |
![]() | 13 Takamine 2019-07-03 23:21:24 +08:00 统一封装对象+1,data 用个泛型加上业务返回码和信息就行。 |