亲宝软件园·资讯

展开

SpringBoot RESTful api

LiuFqiang 人气:1

 

一、REST简单介绍

REST代表Representational State Transfer,是一种URI风格,是一组架构约束条件和原则。REST风格服务调用就是解析URL请求,将请求由逻辑构建处理,并将处理结果返回给前端的一种调用形式。这个风格被广泛用于微服务系统之间的交互,一般前后端分离的项目采用这种风格,而不是一种标准。总结来说rest设计规范通过URL表示接口名,HTTP请求方式来区分请求类型,同时前端根据HTTP状态响应做相应的操作

二、URI介绍

URI:统一资源定位符(Uniform Resource Locator),资源(Resource)就是网络上的一个实体,或者说是网络上的一个具体信息,每一个资源类和其资源实体都可以用一个URI地址来唯一标识,比如https://cnblogs.com标识博客资源类,https://cnblogs.com/p/2478932.html表示一个唯一的博客资源实体,它的资源类是cnblogs.com,资源实体表示就是2478932
对资源类和对资源实体的访问和操作被称为资源请求(ResourceRequest),请求中包含要访问的资源类、资源实体(可选)以及资源动作。如上所述,资源类和资源实体可以由一个唯一的URI表示,而资源动作(即对资源增删改查)则需要用方法(Method)和参数(Param)表示。

基于资源的请求示例

方法 URL 示例解释
GET  https://cnblogs.com/ 获取博客类所有实体
GET  https://cnblogs.com/23424 获取指定博客文章的资源实体
POST https://cnblogs.com/  创建一个博客文章,参数可以是包含初始值的对象
PUT https://cnblogs.com/23424  更新指定博客文章资源实体,参数是增量变更的对象
DELETE https://cnblogs.com/23424  删除指定的资源实例

 

 

 

 

 

 

 

 

资源概念横跨后台和各类前端,两端之间采用REST风格的服务暴露形式,因此每一个资源URI会对应于一个HTTPURL,而资源请求中的方法正好对应于HTTPMethod。

在后台,首先需要定义资源操作,约定根据URL请求路径地址信息、URL请求路径中的参数和HTTP请求方法对应的资源操作方法,映射到具体操作资源类和方法。

HTTP存在创建、修改、访问、删除这几种操作
Rest风格的url一般不会出现动词,对资源的操作方式已经交给了HTTPMethod了
错误:http:xxxxxx.com/getUserById

未使用RESTful之前与之后对比

操作 未使用RESTful   使用RESTful
查找(SELECT-GET)  /rest/api/getUser   /rest/api/user

修改(UPDATE-PUT)
 /rest/api/editUser   /rest/api/user/34543
增加(INSERT-POST)  /rest/api/addUser   /rest/api/user/34543
删除(DELETE-PUT)  /rest/apihttps://img.qb5200.com/download-x/deleteUser  /rest/api/user/34543

 

 

 



 

 

 

三、SpringBoot对REST风格请求调用


下面基于SpringBoot使用rest风格请求示例:

@RestController 
@RequestMapping(value="/rest/api")
public class ConsTranChkController {

@Autowired
private IConsTranChkService consTranChkService;

/**
* RESTful查询
* @return
* @author liufq
* @Date 2019年11月14日 下午5:44:41
*/
@RequestMapping(value="/user", method=RequestMethod.GET)
public List<Map<String, Object>> getUserInfo(){
List<Map<String, Object>> resultList = consTranChkService.getChksList();
System.out.println(resultList);
return resultList;
}

/**
* RESTful修改
* @param userId
* @return
* @author liufq
* @Date 2019年11月14日 下午5:44:56
*/
@RequestMapping(value="user/{userId}", method=RequestMethod.PUT)
public int editUser(@PathVariable String userId){
System.out.println("获取到用户ID:" + userId);
return consTranChkService.editUser(userId);
}

 

 

这里不再贴Dao层及业务层的代码了,只是简单说明从前端请求到spring 的控制层rest风格的接受参数,为了可以更明显的看到HTTPMethod,我们可以使用@RequestMapping(value="/user", method=RequestMethod.GET)比如这样的注解形式,让URL映射到对应的控制器,不过为了更好的支持REST风格的开发,spring之后还提供了@GetMapping,@PostMapping,@PatchMapping,@DeleteMapping
通过@RequestMapping,@GetMapping等注解可以定位到指定的控制器方法上,通过注解@Pathvariable能够将URL参数获取,通过@RequestBody可以讲请求体为json格式的字符串转为java对象。

加载全部内容

相关教程
猜你喜欢
用户评论