java api返回值的标准化详解

 更新时间:2019年03月08日 17:05:32   作者:张占岭(仓储大叔,Lind)  
这篇文章主要介绍了java api返回值的标准化详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

api返回值的标准化

例如

{"status":200,"message":"操作成功","data":"{\"id\":1,\"name\":\"张三\"}"}

封装返回对象

对象被封装在base.util.ResponseUtils类型下,返回值是标准的ResponseEntity对象,返回体进行了二次封装,主要有status,messsagedata组成,返回方法有ok和okMessage,如果真是返回消息,不需要对象,可以选择使用okMessage,反之使用ok方法。

封装的返回对象:

 @Builder
 @Getter
 @NoArgsConstructor
 @AllArgsConstructor
 static class ResponseBody {

 private int status;
 private String message;
 private Object data;
 }

httpError和我们封装的httpError

对于http error来说有很多种,基本可以定为code在400到500之间的,像客户端参数问题就是400- bad request,而没有认证就是401-Unauthorized,认证但没有对应的权限就是403-Forbidden,请求的
资源没有发现就是404-Not Found,请求方式错误(方法是post,你发起请求用了get)就是405- Method Not Allowed等。

使用标准http响应状态码

 @GetMapping(GET_HTTP_ERROR)
 ResponseEntity<?> getHttpError() throws IOException {
 return ResponseEntity.badRequest().build();
 }
 @Test
 public void getHttpError() throws Exception {
  mockMvc
   .perform(
    get(LindDemo.GET_HTTP_ERROR)
     .accept(MediaType.APPLICATION_JSON_UTF8))
   .andExpect(status().is(400));
 
 }

响应的结果

MockHttpServletResponse:
   Status = 400
 Error message = null
   Headers = {}
  Content type = null
    Body = 
 Forwarded URL = null
 Redirected URL = null
   Cookies = []

使用我们封装的status状态码

 @GetMapping(GET_ERROR)
 ResponseEntity<?> getError() throws IOException {
 return ResponseUtils.badRequest("传入的参数非法!");
 }
 
 @Test
 public void getError() throws Exception {
  mockMvc
   .perform(
    get(LindDemo.GET_ERROR)
     .accept(MediaType.APPLICATION_JSON_UTF8))
   .andExpect(status().isOk());
 
 }

响应的结果

MockHttpServletResponse:
   Status = 200
 Error message = null
   Headers = {Content-Type=[application/json;charset=UTF-8]}
  Content type = application/json;charset=UTF-8
    Body = {"status":400,"message":"传入的参数非法!","data":{}}
 Forwarded URL = null
 Redirected URL = null
   Cookies = []

通过上面的响应结果可以看到,我们封装的请求httpcode还是200,只不过把请求错误400状态码写在了body
对象里,目前这种方法用的比较多,像一些第三方接口用的都是这种方式,他们会规定相应的响应规范。

总结

事实上,两种响应体都没有问题,关键在于开发之间的规则要确定,不要在项目里两者兼用!

以上所述是小编给大家介绍的java api返回值的标准化详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Java实现迅雷地址转成普通地址实例代码

    Java实现迅雷地址转成普通地址实例代码

    本篇文章主要介绍了Java实现迅雷地址转成普通地址实例代码,非常具有实用价值,有兴趣的可以了解一下。
    2017-03-03
  • Spring Boot 与 Kotlin 使用JdbcTemplate连接MySQL数据库的方法

    Spring Boot 与 Kotlin 使用JdbcTemplate连接MySQL数据库的方法

    本文介绍在Spring Boot基础下配置数据源和通过 JdbcTemplate 编写数据访问的示例。感兴趣的朋友跟随脚本之家小编一起学习吧
    2018-01-01
  • 如何解决java.lang.NoClassDefFoundError:Could not initialize class java.awt.Color问题

    如何解决java.lang.NoClassDefFoundError:Could not initi

    文章讲述了在Java服务器中处理图形元素时遇到的常见问题,即需要运行X-server,通过在Tomcat/bin/catalina.sh中增加JAVA_OPTS环境变量并设置-Djava.awt.headless=true,可以解决这个问题,使服务器能够在没有图形界面的情况下运行
    2024-11-11
  • java多线程中断代码详解

    java多线程中断代码详解

    这篇文章主要介绍了java多线程中断代码详解,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Java中的Lambda表达式及其应用小结

    Java中的Lambda表达式及其应用小结

    Java中的Lambda表达式是一项极具创新性的特性,它使得Java代码更加简洁和高效,尤其是在集合操作和并行处理方面,这篇文章主要介绍了Java中的Lambda表达式及其应用,需要的朋友可以参考下
    2025-04-04
  • java基于OpenGL ES实现渲染实例

    java基于OpenGL ES实现渲染实例

    这篇文章主要介绍了java基于OpenGL ES实现渲染,实例分析了OpenGL渲染操作的相关技巧,需要的朋友可以参考下
    2015-06-06
  • java网络编程之群聊功能

    java网络编程之群聊功能

    这篇文章主要为大家详细介绍了java网络编程之群聊功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 基于Java的界面开发详细步骤(用户注册登录)

    基于Java的界面开发详细步骤(用户注册登录)

    通过一段时间Java Web的学习,写一个简单的注册登陆界面来做个总结,这篇文章主要给大家介绍了基于Java的界面开发(用户注册登录)的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • Java substring原理及使用方法实例

    Java substring原理及使用方法实例

    这篇文章主要介绍了Java substring原理及使用方法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Java的LinkedHashSet源码深入讲解

    Java的LinkedHashSet源码深入讲解

    这篇文章主要介绍了Java的LinkedHashSet源码深入讲解,LinkedHashSet是HashSet的子类,而由于HashSet实现了Set接口,因此LinkedHashSet也间接实现了Set类,LinkedHashSet类属于java.base模块,java.util包下,需要的朋友可以参考下
    2023-09-09

最新评论