关于RESTful详细讲解

目录

前言

RESTful的典型表现包括

则在application-dev.yml中添加配置:


前言

百科定义】RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。

RESTful是一种风格,并不是规范或标准,所以,并不一定需要完全照做!

RESTful的典型表现包括

是前后端分离的,即服务器端将响应正文

根据请求尝试执行的数据操作不同,区分使用请求方式

POST:新增数据 PUT:修改数据 DELETE:删除数据 GET:查询数据

通常不照做,在大多场景中,推荐以查询为主要目的的使用GET,否则,全部使用POST 将某些具有唯一性的、不敏感的参数值,作为URL的一部分,例如:

Spring MVC框架很好的支持了RESTful,当设计URL时,如果URL中包含参数值,可以使用{自定义名称}进行占位,例如:

@PostMapping("/{id}/delete")

然后,在处理请求的方法上,在对应的参数上添加@PathVariable注解,表示此参数的值应该由URL中同名占位符的值注入进来,例如:

public JsonResult delete(@PathVariable Long id) { // .... }

如果占位符中的名称,与方法的参数名称并不相符,可以在@PathVariable注解参数中指定占位符名称,例如:  

@PostMapping("/{id}/delete") public JsonResult delete(@PathVariable("id") Long albumId) { // .... }

 在配置占位符名称时,可以在占位符名称右侧添加1个冒号,并且,在冒号右侧添加正则表达式,以限制URL中传入的值的格式,例如:

@PostMapping("/{id:[0-9]+}/delete")

 没有配置正则表达式时,如果提交的请求中的占位符位置的值不是纯数字时,会导致400错误,这是服务器端接收了请求、获取了占位符位置的值并尝试转换类型时出现的错误,其实,根本没有必要接收并尝试处理此请求!所以,添加正则表达式是更有利于服务器端的做法!

当使用了正则表达式之后,其实,允许多个使用了占位符、不同匹配规则的URL同时存在,例如:

@PostMapping("/{id:[0-9]+}/delete")
public JsonResult delete(@PathVariable Long id) {
    // ...
}
@PostMapping("/{name:[a-z]+}/delete")
public JsonResult delete(@PathVariable String name) {
    // ...
}

以上2个处理请求的方法是允许同存的,当客户端提交的请求中,占位符位置是纯数字时,会执行上方的方法,占位符位置是纯小写字母时,会执行下方的方法!

需要注意,使用这种做法,必须保证某个URL只能匹配到其中某1种正则表达式,如果在以上设计的基础上,再添加:

@PostMapping("/{no:[0-9a-z]+}/delete")
public JsonResult deleteTest(@PathVariable String no) {
    // ...
}

当添加以上方法时,如果提交了 /album/a123/delete 请求,将由以上新添加的方法进行处理,如果提交了 /album/123/delete 请求,由于可以匹配多个正则表达式,框架无法判断,会出错!

另外,如果还存在以下请求:

@PostMapping("/test/delete")
public JsonResult delete() {
    // ...
}

将由以上新添加的方法进行处理,如果提交了 /album/test/delete 请求,则会执行以上新添加的方法,不会报错!

基于RESTful的URL设计,可参考:

查询数据列表,格式为:/数据类型的复数

例如:/albums 查询某1项数据,格式为:/数据类型的复数/{ID}

例如:/albums/{id:[0-9]+}

其实,在RESTful的建议中,查询、修改、删除都用以上这种URL,根据请求方式来区分需要执行的数据管理操作 对某1项数据执行数据管理,格式为:/数据类型的复数/{ID}/命令

例如:/albums/{id:[0-9]+}/delete

指定服务端口 在Spring Boot项目中,在配置文件中通过server.port属性可以指定服务端口!

则在application-dev.yml中添加配置:

server:

  port: 9080

在VUE Cli项目中,在项目的根目录下有package.json文件,配置此文件中scripts属性中的serve属性,可以修改服务端口

希望文章对你有所帮助!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值