java实现json格式的状态码数据
2017-08-28 16:05
337 查看
功能
技术与IDE
代码参考github
代码片段
创建状态码的类 StatusCode
创建返回json格式的类 JsonResult
编写登陆页面的类 LoginController
编写启动程序JsonStatusApplication
浏览器中访问url
返回结果
如果不创建JsonResult会是什么效果
代码块修改LoginControllerjava
提高代码的质量
思路1 直接创建变量2 创建类枚举
Junit测试类
{“code”:200,”message”:”成功”,”date”:1504785964984}
IntelliJ IDEA
比较创建JsonResult,会更灵活,扩展性更好。
因为当我们想要修改返回的code200/404/400或者message成功/失败信息时,需要修改多处使用到的地方。而我们定义JsonResult后,只需要在一个地方修改就可以修改所有的值
就是说能用变量代替的不要用常量
example:
需求: 在20个文件中使用System.out.println(“我是白玉”); 当需求改变,修改我是白玉为“我是赵雅芝”,此时有两种方法解决
方法一: 把20个文件中的我是白玉逐一修改成我是赵雅芝。
方法二: 定义变量String name = “我是白玉”,在20个文件中使用,当需要修改name的值时,直接修改name = ”我是赵雅芝“
两种方法比较: 显然第二种方法灵活性更好,只需要改动一个地方就可以改变所有使用的地方。第一种显然比较笨拙,不建议采用
第二种直接创建类/枚举…
本例的JsonResult代替写成固定的code200和message成功。显然创建JsonResult这个枚举更灵活。
技术与IDE
代码参考github
代码片段
创建状态码的类 StatusCode
创建返回json格式的类 JsonResult
编写登陆页面的类 LoginController
编写启动程序JsonStatusApplication
浏览器中访问url
返回结果
如果不创建JsonResult会是什么效果
代码块修改LoginControllerjava
提高代码的质量
思路1 直接创建变量2 创建类枚举
Junit测试类
功能
编写一个返回格式是json格式的数据,并且此数据是状态码的数据。例如:{“code”:200,”message”:”成功”,”date”:1504785964984}
技术与IDE
spring bootIntelliJ IDEA
代码参考github:
Json-Status代码片段
1. 创建状态码的类 – StatusCode
StatusCode .javapackage com.yubai.jsonstatus.model; /** * 功能:输出的json字段的值是StatusCode类决定 * 就是说返回状态的值是成功200还是失败400还是错误404,这些值 * 是StatusCode这个类定义的。 */ public enum StatusCode { /** 成功 */ SUCCESS(200, "成功"), /** 没有登录 */ NOT_LOGIN(400, "没有登录"), /** 发生异常 */ EXCEPTION(401, "发生异常"), /** 系统错误 */ SYS_ERROR(402, "系统错误"), /** 参数错误 */ PARAMS_ERROR(403, "参数错误 "), /** 不支持或已经废弃 */ NOT_SUPPORTED(410, "不支持或已经废弃"), /** AuthCode错误 */ INVALID_AUTHCODE(444, "无效的AuthCode"), /** 太频繁的调用 */ TOO_FREQUENT(445, "太频繁的调用"), /** 未知的错误 */ UNKNOWN_ERROR(499, "未知错误"); private int code; private String message; StatusCode(int code, String message) { this.code = code; this.message = message; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
2. 创建返回json格式的类 – JsonResult
package com.yubai.swaggerrestfulapi; /** * 这个类定义了返回的json格式,即json含有哪些字段 */ public class JsonResult { private String code; private String message; private Object data; public JsonResult(String code, String message, Object data) { this.code = code; this.message = message; this.data = data; } public String getCode() { return code; } public String getMessage() { return message; } public Object getData() { return data; } }
3. 编写登陆页面的类 – LoginController
AdminController .javapackage com.yubai.jsonstatus.controller; import com.yubai.jsonstatus.model.JsonResult; import com.yubai.jsonstatus.model.StatusCode; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Date; import java.util.Map; /** * 功能: 这是决定url的路劲,和判断是否可以登陆成功的逻辑 */ @RestController @RequestMapping(value = "/login") public class LoginController { private String username = "admin"; private String password = "123"; /** * @apiNote login * @param maps 保存username password * @return JsonResult */ @RequestMapping(value = "") public JsonResult login(HttpServletRequest request, HttpServletResponse response, @RequestParam Map<Integer, String> maps) { if (maps.get("username").equals(username) && maps.get("password").equals(password)) { return new JsonResult(StatusCode.SUCCESS.getCode(), StatusCode.SUCCESS.getMessage(), new Date()); } else { return new JsonResult(StatusCode.NOT_LOGIN.getCode(), StatusCode.NOT_LOGIN.getMessage(), new Date()); } } }
4. 编写启动程序JsonStatusApplication
package com.yubai.swaggerrestfulapi; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class JsonStatusApplication{ public static void main(String[] args) { SpringApplication.run(SwaggerRestfulApiApplication.class, args); } }
浏览器中访问url:
http://localhost:8082/api/admin/login?username=admin&password=123返回结果:
如果不创建JsonResult会是什么效果
代码块(修改LoginController.java)
LoginController .javapackage com.yubai.jsonstatus.controller; import com.yubai.jsonstatus.model.JsonResult; import com.yubai.jsonstatus.model.StatusCode; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Date; import java.util.Map; /** * 功能: 这是决定url的路劲,和判断是否可以登陆成功的逻辑 */ @RestController @RequestMapping(value = "/login") public class LoginController { private String username = "admin"; private String password = "123"; /** * @param maps 保存username password * @return JsonResult * @apiNote login */ @RequestMapping(value = "") public JsonResult login() { if ("admin".equals(username) && "123".equals(password)) { return new JsonResult(200, "成功", new Date()); } else { return new JsonResult(400, "失败", new Date()); } } }
比较创建JsonResult,会更灵活,扩展性更好。
因为当我们想要修改返回的code200/404/400或者message成功/失败信息时,需要修改多处使用到的地方。而我们定义JsonResult后,只需要在一个地方修改就可以修改所有的值
提高代码的质量
建议我们的代码具有灵活性,不要写固定的代码。就是说能用变量代替的不要用常量
思路:1. 直接创建变量,2. 创建类/枚举…
第一种直接创建变量example:
需求: 在20个文件中使用System.out.println(“我是白玉”); 当需求改变,修改我是白玉为“我是赵雅芝”,此时有两种方法解决
方法一: 把20个文件中的我是白玉逐一修改成我是赵雅芝。
方法二: 定义变量String name = “我是白玉”,在20个文件中使用,当需要修改name的值时,直接修改name = ”我是赵雅芝“
两种方法比较: 显然第二种方法灵活性更好,只需要改动一个地方就可以改变所有使用的地方。第一种显然比较笨拙,不建议采用
第二种直接创建类/枚举…
本例的JsonResult代替写成固定的code200和message成功。显然创建JsonResult这个枚举更灵活。
Junit测试类
详情请见代码参考github相关文章推荐
- java 后台实现ajax post跨域请求传递json格式数据获取json数据问题
- Json-lib, 实现Java对象与JSON数据格式的互转
- Json-lib, 实现Java对象与JSON数据格式的互转
- Json-lib, 实现Java对象与JSON数据格式的互转
- 采用JSON数据交换格式实现框架
- 一个java处理JSON格式数据的通用类
- 很好用的Google 开源项目Gson在java中解析和创建json格式的数据
- java中Json格式数据的应用
- Java中Json格式数据的应用
- Java类,生成Dojo_Gird表格的json数据格式
- java 数组转换为json格式数据
- jrawio - 纯 Java 实现对数码相机 RAW 格式数据进行解码获取图像信息
- json格式数据取得1- 直接从client读取 (jquery+ajax实现)
- 一个java处理JSON格式数据的通用类
- 一个java处理JSON格式数据的通用类
- 一个java处理JSON格式数据的通用类(封装了一个class)
- 【转】一个java处理JSON格式数据的通用类
- 一个java处理JSON格式数据的通用类
- JAVA 操作树返回JSON数据格式
- java对象转化为json格式数据