java标准json格式_java实现json格式的状态码数据

功能

技术与IDE

代码参考github

代码片段

创建状态码的类 StatusCode

创建返回json格式的类 JsonResult

编写登陆页面的类 LoginController

编写启动程序JsonStatusApplication

浏览器中访问url

返回结果

如果不创建JsonResult会是什么效果

代码块修改LoginControllerjava

提高代码的质量

思路1 直接创建变量2 创建类枚举

Junit测试类

功能

编写一个返回格式是json格式的数据,并且此数据是状态码的数据。例如:

{“code”:200,”message”:”成功”,”date”:1504785964984}

技术与IDE

spring boot

IntelliJ IDEA

代码参考github:

Json-Status

代码片段

1. 创建状态码的类 – StatusCode

StatusCode .java

package 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 .java

package 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 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

返回结果:

7c47874cb9e0173c17f3824645133eed.png

如果不创建JsonResult会是什么效果

代码块(修改LoginController.java)

LoginController .java

package 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值