Get 和 Post请求

1、介绍

1.1、Get请求

        GET请求是最常见的请求类型,最常用于向服务器查询某些信息,必要时,可以将查询字符串参数追加到URL的末尾,以便将信息发送给服务器。

1.1.1 使用GET方法的具体情况

1.客户端与服务端的交互像是一个提问(如查询操作、搜索操作、读操作)
2.请求是为了查找资源,HTML表单数据仅用来帮助搜索
3.请求结果无持续性的副作用(如进行搜索)
4.收集的数据及HTML表单内的输入字段名称的总长不超过1024个字符
5.获取参数或者短小的内容时用GET,如?id=5 或者 ?title=abc&url=http...

1.1.2 GET方式提交数据特点

1、GET方式在url后面拼接参数,只能以文本的形式传递参数
2、传递的数据量小,4kb左右(不同浏览器会有差异)
3、安全性低,会将信息显示在地址栏
4、速度快,通常用于对安全性要求不高的请求

1.2、Post请求

使用频率仅次于GET的是POST请求,通常用于向服务器发送应该被保存的数据。POST请求应该把数据作为请求的主体提交,而 GET请求传统上不是这样。POST请求的主体可以包括非常多的数据,而且格式不限。

1.2.1使用POST方法的具体情况

1.交互是一个命令或订单(order),比提问包含更多信息
2.交互改变了服务器端的资源并被用户察觉,例如订阅某项服务
3.用户需要对交互产生的结果负责
4.请求的结果有持续性的副作用,例如,数据库内添加新的数据行
5.GET方法可能会产生很长的URL,或许会超过某些浏览器与服务器对URL长度的限制,所以使用POST
6.获取大断的内容用POST,通常表单用 POST 方式提交数据,表单的method必须设置为POST
7.对数据有变更的请求(增删)用post;(比如发贴,回复的form 用的是 POST)

1.2.3、POST方式提交数据特点

1、post提交数据相对于get的安全性高一些。(注意:抓包软件也会抓到post的内容,安全性要求高可以进行加密)
2、传递数据量大,请求对数据长度没有要求
3、请求不会被缓存,也不会保留在浏览器的历史记录中
4、用于密码等安全性要求高的场合,提交数据量较大的场合,如上传文件,发布文章等
5、POST方式提交数据上限默认为8M(可以在PHP的配置文件post_max_size选项中修改)

2、区别

GET
在请求URL后面以?的形式跟上发给服务器的参数,多个参数之间用&隔开,比如http://ww.test.com/login?username=123&pwd=234&type=JSON 由于浏览器和服务器对URL长度有限制,因此在URL后面附带的参数是有限制的,通常不能超过2KB

POST
发给服务器的参数全部放在请求体中
理论上,POST传递的数据量没有限制(具体还得看服务器的处理能力)

  1. GET在浏览器回退时是无害的,而POST会再次提交请求
  2. GET产生的URL地址可以被Bookmark,而POST不可以
  3. GET请求会被浏览器主动cache,而POST不会,除非手动设置
  4. GET请求只能进行url编码,而POST支持多种编码方式
  5. GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留
  6. GET请求在URL中传送的参数是有长度限制的,而POST没有
  7. 对参数的数据类型,GET只接受ASCII字符,而POST没有限制
  8. GET参数通过URL传递,POST放在Request body中
  9. GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息

3、参数传递

3.1 @RequestParam注解

用于从HTTP请求中提取查询参数或表单参数。其中一些常用的属性参数包括name、defaultValue和required。

1:value属性:用于指定要提取的查询参数或表单参数的名称
2:defaultValue属性:用于设置参数的默认值。(请求中没有提供相应的参数,将使用默认值)
3:required属性:用于指定参数是否是必需的
        设置为 true,则请求中必须包含相应的参数
        设置为 false,则参数是可选的

@GetMapping("/example")
public String exampleMethod(@RequestParam(value= "param",  defaultValue = "default", required = true) String param) {
    // Method implementation
}

3.2 @RequestBody注解

用于从请求体中获取数据。

主要用于处理HTTP请求的请求体,通常用于接收JSON或XML格式的数据。

3.3 @PathVariable注解 

@PathVariable 注解的作用是将 URL 中的路径参数(Path parameters)绑定到方法的参数上。在 Spring MVC 中,我们可以通过在控制器(Controller)的方法参数上添加 @PathVariable 注解来获取 URL 中的变量值,并将其作为方法参数的值进行使用。例如,假设我们有一个 RESTful API,用于获取用户信息的请求路径为 /users/{id},其中 {id} 为用户的唯一标识。我们可以使用 @PathVariable 注解来将 URL 中的 id 变量值绑定到方法的参数上,从而在方法中可以直接使用该参数。

下面是一个示例:

@GetMapping("/users/{id}")
public String getUserInfo(@PathVariable("id") Long userId) {
    // 处理 userId 的逻辑
    return "User ID: " + userId;
}

        在上述示例中,@PathVariable("id") 表示将 URL 中的 id 变量值绑定到方法的 userId 参数上。当请求路径为 /users/123 时,userId 参数的值将为 123。这样我们就可以在方法中使用 userId 参数进行相应的逻辑处理。

        总结来说,@PathVariable 注解的作用是用于获取 URL 中的路径参数,并将其绑定到方法的参数上,方便在方法中使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值