0、写在前面
什么是restful,网上各种文章已经说的非常详细了,但是对于我这个菜鸟来说,明白它是什么并不能帮助我明白在项目如何中使用这种风格,经过参考别人的项目,我大概了解了如何在一个web项目中使用restful风格,特此记录一下。
1、如何在项目中使用restful风格
restfulAPI并没有固定的写法,只需要遵循restfulAPI的规则即可。
在这里记录一个最常见的写法
构造一个RestfulApi的实体类
在处理完请求后,调用实体类中的静态方法,返回RestfulApi实例即可
package com.tianqicode.testjpa.bean;
public class ResultApi {
/**
* 定义静态的状态码
*/
public static int SUCCESS_CODE = 200;
public static int FAIL_CODE = 400;
/**
* 返回状态码,表示一种错误类型
* 请求成功,状态码为200
*/
private int code;
/**
* 对错误代码的详细解释
*/
private String message;
/**
* 返回的结果包装在value中,value可以是单个对象
*/
private Object data;
//无参的构造函数
public ResultApi() {
}
//含参的构造函数
public ResultApi(int code, String message, Object data) {
this.code = code;
this.data = data;
this.message = message;
}
//返回无数据,无描述的成功result对象
public static ResultApi success() {
return new ResultApi(SUCCESS_CODE,null,null);
}
//返回仅无数据的成功result对象
public static ResultApi success(String message) {
return new ResultApi(SUCCESS_CODE,message,null);
}
//返回有数据无描述的成功result对象
public static ResultApi success(Object data) {
return new ResultApi(SUCCESS_CODE,"",data);
}
//返回失败的result对象并添加描述
public static ResultApi fail(String message) {
return new ResultApi(FAIL_CODE,message,null);
}
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;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}
例如实现一个简单的登录功能
@PostMapping("api/login")
@ResponseBody
public ResultApi loginService(@RequestBody User loginUser) {
String name = loginUser.getUsername();
String password = loginUser.getPassword();
System.out.println(name);
User user = userService.findByName(name);
System.out.println(user);
System.out.println(loginUser);
if (user != null) {
if (user.getPassword().equals(password)) {
System.out.println("登陆成功");
} else {
// System.out.println("密码错误");
return ResultApi.fail("密码错误!");
}
} else {
// System.out.println("用户不存在");
return ResultApi.fail("用户不存在!");
}
return ResultApi.success("登陆成功");
}