Http请求之GET,POST,PUT,DELETE

Posted by 梁三叶 on 2019-03-22

Http-Protocol 协议请求

Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。简单的来讲,对应的分别是新增,删除,修改,查询四种操作。

1.POST请求(增)

向服务器提交数据。这个方法用途广泛,几乎目前所有的提交操作都是靠这个完成

1
2
3
@RequestMapping(value ="/user", method = RequestMethod.POST)
public void UserAdd(User user){
userService.AddUser(user);

2.DELETE请求(删)

就是执行相应的删除操作,配合数据库进行相应的删除动作。

1
2
3
@RequestMapping(value ="/user", method = RequestMethod.DELETE)
public void UserDel(@RequestParam(value="no") int no){
userService.delUserById(no);}

3.PUT请求(改)

本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。

1
2
3
4
@RequestMapping(value ="/user", method = RequestMethod.PUT)
public void UserUpdate(User user){
userService.updateUserByNo(user);
}

4.GET请求(查)

它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现据(如HTML文本,或者图片或者视频等)返回给客户端,一般情况下,通过接口查询相应的数据时一般是采用GET请求。

1
2
3
4
@RequestMapping(value ="/user", method = RequestMethod.GET)
public List<User> UserQry() {
return userService.getUser();
}

GET和POST的区别

    1. GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中.
    1. GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
    1. GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。
    1. GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.

PUT和POST的区别

幂等:即为多次相同的请求,对应的结果相同则为幂等。对于单个输入或者无输入的运算方法,如果每次都是同样的结果,则称其是幂等的。也就是说,如果一个网络重复执行多次,产生的效果是一样的,那就是幂等(idempotent)

POST
用于提交请求,可以更新或者创建资源,是非幂等的,没有指定提交数据的具体位置,由服务器决定
举个例子:
在用户注册功能上,每次提交都是创建一个用户账号,这个时候就用POST。
ESTful URL地址应为:/user/creation?user_name=&pwd=

PUT
用于向指定URL传送更新资源,是幂等的。
还是用户模块,比如修改用户密码,虽然提交的还是账户名跟用户密码这个俩个必填参数,但是每次提交都只是更新该用户密码,每次请求都只是覆盖原先的值。此时就该用PUT。 ESTful URL地址应为:/user/{user_id}/modify?pwd=**

何时使用PUT,POST?

如果该更新对应的URI多次调用的结果一致,则PUT。如果每次提交相同的内容,最终结果不一致的时候,用POST。