关于RESTful风格——初学者向

目录

所以我们总结一下


RESTful是一种设计URL的风格。

注意:RESTful既不是规定,也不是规范!

RESTful的典型表现是:将某些具有“唯一性”的参数值作为URL的一部分。

例如:
 

https://blog.csdn.net/ls013/article/details/810691
https://blog.csdn.net/weixfd3811/article/details/1156346

以上URL,如果不采用RESTful风格,可能是:
 

https://blog.csdn.net/article/details?username=ls013&id=810691
https://blog.csdn.net/article/details?username=weixfd3811&id=1156346

可以看到这种请求方式的路径比较复杂,而且语义不够明显,我们并不易于从中获取到相关信息,为了使请求路径变得更加简洁,传递、获取参数值更加方便,通过路径变量@PathVariable的类型,可以约束访问参数。我们就要使用Restful的URL设计风格。
所以,如果需要设计“根据id删除相册”的URL,可以设计为:

http://localhost:8080/albums/9527/delete

从中不难看出我们想要操作的内容,请求的方式,以及id的信息。那么我们在controller中怎么拦截客户端的请求呢?SpringMVC为我们提供了很好的对RESTful风格的支持,还是上面那个例子,要实现对以上URL的拦截,可以在controller的方法中这样写:

@Slf4j
@RestController
@RequestMapping("/albums")
public class AlbumController {
    @RequestMapping("/{id}/delete")
    public String delete(@PathVariable Long id) {
    log.debug("开始处理删除id={}请求", id);
    return "处理了/" + id + "/delete的请求";
    }
}

在处理请求的方法的参数列表中,可以声明与占位符的名称匹配的参数,并添加@PathVariable注解,即可接收到URL中的参数值 
如果URL中占位符的名称与方法参数的名称不匹配,可以在@PathVariable注解中配置参数,值为URL中占位符的名称即可,则方法参数的名称就不重要了!例如:
 

@RequestMapping("/{albumId}/delete")
public String delete(@PathVariable("albumId") Long id) {
    log.debug("开始处理删除id={}请求", id);
    return "处理了/" + id + "/delete的请求";
}

也就是说我们占位符中虽然传入的是albumId字段的值,但是我们方法参数中也可以定义不同的名称,只需在@PathVariable注解中配置对应参数即可。

所以我们总结一下

RESTFUL特点包括:

1、每一个URI代表1种资源;

2、客户端使用GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源;

3、通过操作资源的表现形式来操作资源;

4、资源的表现形式是XML或者HTML;

5、客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Leon_coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值