前言
我们从大一刚开始学习Java到现在已经写了两三次项目后,我们的编程能力在逐渐提升,但是有个很容易忽略的点,虽然说平时对开发没有太大的影响,但是即使是很小的错误,都极有可能会对我们未来的开发和工作造成打击性的影响。所以今天我就来记录一下这个学习过程。
一、问题引入
时日至今,我很荣幸能够成为一名web后端学习者,在我们前后端合作写项目的同时,我们后端的任务就是维护数据和写接口,总所周知,接口决定了一个功能的实现,所以对于接口的问题,就是http的请求方式的正确与否。
依稀记得,我们第一次写项目,由于对http请求方式不是很了解,所以使用的最多的就是post请求和get请求,当时只是简单的记得,post请求能够隐藏请求参数,get请求的参数会加在url后面。当时这种简单的认知只是觉得虽然说是这样,但是其实并没有太大的区别,就是说,登录使用post,其他的都行。但是其实这种是不对的,每种请求方式都有自己的特性,使用的方式、场景也不尽相同。
印象最深刻的一次,就是我当时在网上查资料学习了一些关于这些http请求方式的知识,并且当时在项目中使用了,我们的前端人员竟然问我,这种请求方式是什么,怎么没有见过。我当时觉得这并没有什么,但是随着知识、项目的学习,我觉得这些却变得极其重要了起来。
下面就让我们一起来学习下,http几种请求方式吧。
二、http几种请求方式的使用
1.GET
(1)get请求是用来获取数据的,就是说只是用来查询数据,不对服务器的数据进行任何的修改、添加、删除等操作,就可以使用get请求;
(2)get请求会把请求的参数加在url后面,这样会产生安全问题,稍微懂点编程的人员都可以通过url来获取你网址的参数和值;
(3)get请求的参数对于请求的url来说并没有大小限制,但是对于不同的浏览器可能会有不同的限制。
//比如,使用id来查询演员信息
@GetMapping("/findActorMessage")
public Result findActorMessage(Integer actorId) {
return actorService.findActorMessage(actorId);
}
?这样的话,对于接口的请求的url就是以下这种
Request URL:
http://localhost:8080/video/actor/findActorMessage?actorId=1
2.POST
(1)post请求一般是对服务器的数据的操作,常用来使用数据的提交,新增操作,这种请求会改变数据的种类等资源;几乎目前所有的提交操作都是通过post来实现;
(2)post请求的请求参数一般都是放在请求体中,不会显示在url后面
(3)post请求的大小也会被服务器限制,这种限制的主要因素是服务器的处理能力。
//用于向数据库添加用户操作
@PostMapping("/addUser")
public ResponseResult addUser(User user) {
User user1 = userService.findUserByAccount(user.getAccount());
if (user1 == null) {
userService.addUser(user);
return ResponseResult.success("添加成功");
} else {
return ResponseResult.error("用户已存在");
}
}
这种方式的请求URL如下?
Request URL
http://localhost:8080/video/user/addUser?account=zzal123456&password=123456
?但是post中的请求参数会隐藏在方法的请求体当中。
3.PUT
?(1)PUT请求是向服务端发送数据、改变信息的,即使POST和PUT请求一样都会改变服务器的数据,但是PUT的侧重点在于对数据的修改操作,而POST则是对数据的添加操作;
(2)PUT请求需要注意的是,虽然和POST请求的执行都是改变动作,但是它采用的参数传递需要使用query格式,否则是拿不到传递的参数的,也就是说如果不使用query格式,那么就只能享受空指针异常了。
//这里用于修改操作
@ApiOperation(value = "用户修改邮箱")
@PutMapping("/findAllUser")
public ResponseResult updateEmail(String email, int userId) {
return userService.updateEmail(email, userId);
}
4.DELETE
?DELETE请求顾名思义,很简单,就是删除资源,一般用于数据库数据的删除操作,这里不再赘述。
//这里用于删除操作
@ApiOperation(value = "根据id删除用户")
@DeleteMapping("/deleteById")
public ResponseResult deleteById(int userId) {
User user = userService.findUserById(userId);
int i = userService.deleteUserById(userId);
if (i > 0) {
return ResponseResult.success("删除成功", user);
} else {
return ResponseResult.error("抱歉未找到");
}
}
5.HEAD
(1)HEAD请求与GET请求类似,区别在于它只是请求页面的头信息,用来获取报头信息,返回的响应中没有内容,GET请求的返回中有实体信息。
(2)HEAD请求一般用来判断类型、根据返回状态确定资源是否存在、资源是否更新以及更新的时间等。
(3)HEAD请求常常被忽略,但是能提供很多的有效信息,特点主要有:只请求资源的头部、可以检查超链接的有效性、检查网页是否被修改、更多用于自动搜索机器人获取页面的某些认证信息等。
6.OPTIONS
(1)由于OPTIONS请求暂时我还没有接触到,所以此部分只是查询资料后总结,这里只是对这种请求方式的简单介绍。
(2)OPTIONS请求是用于获取由Request-URI标识的资源在请求/响应的通信过程中可以使用的功能选项,通过这个方法,客户端可以在才取具体资源之前,决定对该资源采用何种必要措施,或者了解服务器的性能;
(3)POPTIONS请求方法的主要用途有两个:
? ? ? ? 1)获取服务器支持的HTTP请求方法;
? ? ? ? 2)用来检查服务器的性能。
总结
以上的http的请求方式基本上可以满足我们现阶段的开发需求,同时,正确使用请求方式也是一个小的细节,希望能对大家有所帮助。
|