小白的springboot之路(十一)、构建后台RESTfull API
程序员文章站
2022-05-23 22:05:24
0、前言 开发系统中,前后端分离,后端一般返回RESTfull API,前端调用API构建UI,彼此分离、互相完全独立; 后台API中,我们一般返回结果码、提示信息、数据三部分内容,如图: 我们今天就来构建一个完整的前后端分离后端的API 一、RESTfull API构建 1、增加结果码接口 IEr ......
0、前言
开发系统中,前后端分离,后端一般返回restfull api,前端调用api构建ui,彼此分离、互相完全独立;
后台api中,我们一般返回结果码、提示信息、数据三部分内容,如图:
我们今天就来构建一个完整的前后端分离后端的api
一、restfull api构建
1、增加结果码接口 ierrorcode
package com.anson.common.result; /** * @author anson * @description 1、结果码接口 * @date 2019/12/10 10:50 */ public interface ierrorcode { long getcode(); string getmessage(); }
2、添加结果消息枚举 resultcode
package com.anson.common.result; /** * @author anson * @description 结果消息枚举 * @date 2019/12/10 22:05 */ public enum resultcode implements ierrorcode { // 数据操作消息定义 success(200, "成功!"), body_not_match(400,"请求的数据格式不符!"), unauthorized(401,"暂未登录或token已经过期!"), forbidden(403, "没有相关权限"), not_found(404, "未找到该资源!"), failed(500, "服务器内部错误!"), server_busy(503,"服务器正忙,请稍后再试!"); private long code; private string message; private resultcode(long code, string message) { this.code = code; this.message = message; } public long getcode() { return code; } public string getmessage() { return message; } }
3、添加返回结果实体 resultbody
package com.anson.common.result; /** * @description: api返回结果实体 * @author: anson * @date: 2019/12/10 10:54 */ public class resultbody<t> { private long code; private string message; private t data; protected resultbody() { } protected resultbody(long code, string message, t data) { this.code = code; this.message = message; this.data = data; } /** * 成功返回结果 * * @param data 获取的数据 */ public static <t> resultbody<t> success(t data) { return new resultbody<t>(resultcode.success.getcode(), resultcode.success.getmessage(), data); } /** * 成功返回结果 * * @param data 获取的数据 * @param message 提示信息 */ public static <t> resultbody<t> success(t data, string message) { return new resultbody<t>(resultcode.success.getcode(), message, data); } /** * 失败返回结果 * * @param errorcode 错误码 */ public static <t> resultbody<t> failed(ierrorcode errorcode) { return new resultbody<t>(errorcode.getcode(), errorcode.getmessage(), null); } /** * 失败返回结果 * * @param message 提示信息 */ public static <t> resultbody<t> failed(string message) { return new resultbody<t>(resultcode.failed.getcode(), message, null); } /** * 失败返回结果 */ public static <t> resultbody<t> failed() { return failed(resultcode.failed); } /** * 参数验证失败返回结果 */ public static <t> resultbody<t> validatefailed() { return failed(resultcode.not_found); } /** * 参数验证失败返回结果 * * @param message 提示信息 */ public static <t> resultbody<t> validatefailed(string message) { return new resultbody<t>(resultcode.not_found.getcode(), message, null); } /** * 未登录返回结果 */ public static <t> resultbody<t> unauthorized(t data) { return new resultbody<t>(resultcode.unauthorized.getcode(), resultcode.unauthorized.getmessage(), data); } /** * 未授权返回结果 */ public static <t> resultbody<t> forbidden(t data) { return new resultbody<t>(resultcode.forbidden.getcode(), resultcode.forbidden.getmessage(), data); } public long getcode() { return code; } public void setcode(long code) { this.code = code; } public string getmessage() { return message; } public void setmessage(string message) { this.message = message; } public t getdata() { return data; } public void setdata(t data) { this.data = data; } }
4、添加实体类、dao、service
略,具体看代码,跟前几节的一致
5、编写controller
//--------------------------------api test------------------- //1、根据id获取单个用户 @apioperation(value = "获取用户", notes = "根据id查询用户信息") @apiimplicitparam(name = "id", value = "用户id", required=true, datatype="int") //api参数 @requestmapping(value="/user/{id}",method= requestmethod.get) public resultbody getuserbyid(int id) { user user = userservice.selectbyprimarykey(id); return resultbody.success(user,"获取单个信息成功"); } //2、获取所有用户 @apioperation(value = "获取所有用户", notes = "获取所有用户") @requestmapping(value="/userall",method= requestmethod.get) public resultbody getuserall() { list<user> users = userservice.getall(); return resultbody.success(users,"获取所有用户信息成功"); }
好,完毕
二、运行测试,在swagger中执行测试,结果如下
{ "code": 200, "data": [ { "id": 1, "password": "123", "realname": "张三", "username": "anson" }, { "id": 2, "password": "123", "realname": "李四", "username": "alex" }, { "id": 3, "password": "123", "realname": "王五", "username": "kks" }, { "id": 4, "password": "000", "realname": "赵柳", "username": "eee" } ], "message": "获取所有用户信息成功" }
下一篇: Mybatis需要注意的细节