Spring Boot系列 - 6. spring boot 实现Restful API

简单几步,实现Restful API:


1、引入相关的依赖:

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <dependency>  
  2.     <groupId>org.springframework.boot</groupId>  
  3.     <artifactId>spring-boot-starter-web</artifactId>  
  4. </dependency>  


2、配置文件application.yml中指定tomcat的端口:

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. server:  
  2.   port: 8082  

3、定义api的返回码:
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.xjj.web.result;  
  2.   
  3. public enum ResultCode {  
  4.     /** 成功 */  
  5.     SUCCESS("200""成功"),  
  6.       
  7.     /** 没有登录 */  
  8.     NOT_LOGIN("400""没有登录"),  
  9.       
  10.     /** 发生异常 */  
  11.     EXCEPTION("401""发生异常"),  
  12.       
  13.     /** 系统错误 */  
  14.     SYS_ERROR("402""系统错误"),  
  15.       
  16.     /** 参数错误 */  
  17.     PARAMS_ERROR("403""参数错误 "),  
  18.       
  19.     /** 不支持或已经废弃 */  
  20.     NOT_SUPPORTED("410""不支持或已经废弃"),  
  21.       
  22.     /** AuthCode错误 */  
  23.     INVALID_AUTHCODE("444""无效的AuthCode"),  
  24.   
  25.     /** 太频繁的调用 */  
  26.     TOO_FREQUENT("445""太频繁的调用"),  
  27.       
  28.     /** 未知的错误 */  
  29.     UNKNOWN_ERROR("499""未知错误");  
  30.       
  31.     private ResultCode(String value, String msg){  
  32.         this.val = value;  
  33.         this.msg = msg;  
  34.     }  
  35.       
  36.     public String val() {  
  37.         return val;  
  38.     }  
  39.   
  40.     public String msg() {  
  41.         return msg;  
  42.     }  
  43.       
  44.     private String val;  
  45.     private String msg;  
  46. }  


4、定义api的返回对象格式:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.xjj.web.result;  
  2.   
  3.   
  4. public class JsonResult {  
  5.       
  6.     private String code;  
  7.     private String message;  
  8.     private Object data;  
  9.       
  10.     public JsonResult() {  
  11.         this.setCode(ResultCode.SUCCESS);  
  12.         this.setMessage("成功!");  
  13.           
  14.     }  
  15.       
  16.     public JsonResult(ResultCode code) {  
  17.         this.setCode(code);  
  18.         this.setMessage(code.msg());  
  19.     }  
  20.       
  21.     public JsonResult(ResultCode code, String message) {  
  22.         this.setCode(code);  
  23.         this.setMessage(message);  
  24.     }  
  25.       
  26.     public JsonResult(ResultCode code, String message, Object data) {  
  27.         this.setCode(code);  
  28.         this.setMessage(message);  
  29.         this.setData(data);  
  30.     }  
  31.       
  32.     public String getCode() {  
  33.         return code;  
  34.     }  
  35.     public void setCode(ResultCode code) {  
  36.         this.code = code.val();  
  37.     }  
  38.     public String getMessage() {  
  39.         return message;  
  40.     }  
  41.     public void setMessage(String message) {  
  42.         this.message = message;  
  43.     }  
  44.   
  45.     public Object getData() {  
  46.         return data;  
  47.     }  
  48.   
  49.     public void setData(Object data) {  
  50.         this.data = data;  
  51.     }  
  52. }  

5、创建controller,处理api请求:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. /** 
  2.  * 管理接口:登录……等 
  3.  * @author XuJijun 
  4.  * 
  5.  */  
  6. @RestController  
  7. @RequestMapping("/api/admin")  
  8. public class AdminController {  
  9.   
  10.     //@Value("${spring.profiles}")  
  11.     //private String env;  
  12.       
  13.     private String userName = "admin";  
  14.     private String pw = "pword";  
  15.       
  16.     /** 
  17.      * 登录 
  18.      * @param response:用于保存token到cookie中 
  19.      * @param map:包含userName和password 
  20.      * @return 
  21.      */  
  22.     @RequestMapping("/login")  
  23.     public JsonResult login(HttpServletRequest request, HttpServletResponse response, @RequestParam Map<String, String> map) {  
  24.         if(userName.equals(map.get("userName")) && pw.equals(map.get("password"))){  
  25.             return new JsonResult(ResultCode.SUCCESS, "登录成功!"null);  
  26.         }else {  
  27.             return new JsonResult(ResultCode.NOT_LOGIN, "登录失败!"null);  
  28.         }  
  29.     }  
  30. }  


6、启动(run as Spring Boot App)后测试:
浏览器中访问:http://localhost:8082/api/admin/login?userName=admin&password=pword

返回结果:

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. {"code":"200","message":"登录成功!","data":null}  

测试成功!

源代码地址:https://github.com/xujijun/my-spring-boot

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页