一、介绍

传统api:

http://ip:port/getBook

http://ip:port/addBook

http://ip:port/delBook

restful 风格api:

GET请求 http://ip:port/book

POST请求 http://ip:port/book

DELETE请求 http://ip/port/book

 

我的理解restful就是面向对象,把每个资源都看成一个对象,形成一个唯一的URI。然后结合http方法进行各种curl操作。

结合上面两个示例,非restful api大多只使用get\post。然后定义api时以动词+名词结合使用。

而restful api的格式是URI上只有名词,不存在动词。区分不同的操作以http自定义的方法区分:

查看 GET

新增 POST

删除 DELETE

局部更新 PUT

全部更新 PATCH

二、代码范例


@org.springframework.web.bind.annotation.RestController
@RequestMapping("/bookPack/book")
public class RestController {

@RequestMapping(method = RequestMethod.GET)
public void get(){

System.out.println("get book");
}

@RequestMapping(method = RequestMethod.POST)
public void post(){

System.out.println("post:add a new book");
}

@RequestMapping(method = RequestMethod.PUT)
public void put(){

System.out.println("put :replace(create or update) a book");
}

@RequestMapping(method = RequestMethod.PATCH)
public void patch(){

System.out.println("patch: update a part of a book");
}

@RequestMapping(method = RequestMethod.DELETE)
public void delete(){

System.out.println("delete a book");
}

}

该段示例代码就是将书包中书作为一个资源对象,匹配的资源URI就是/bookPack/book,
对应的各种curl其实就是不同的http方法予以区分,访问的api都是一样的。
至于使用哪种http方法,这个要结合业务使用,不要被方法名所迷惑,要结合实际使用场景。

三、http方法
get:获取方法。幂等
post:新增,非幂等
delte:删除,幂等
put:全更新,幂等。如果参数不全,不传的参数将修改为null
patch:部分更新,幂等。如果参数不全,只更新传参数的部分

四、幂等
幂等就是不管执行多少次重复操作,最后结果保持不变。
结合使用效果可以看出 http方法:post 非幂等,get\delete\put\patch为幂等

 

posted on 2019-11-29 18:12  总结造就再进步  阅读(1373)  评论(0编辑  收藏  举报