GET请求或者POST请求的特点和业务中的应用场景

GET请求或者POST请求

浏览器只能发送GET请求和POST请求

  • 在没有使用Ajax异步请求前只可以使用Form表单发送POST请求,并且form标签中的method属性值为method="post"
  • 其他所有情况一律都是发送GET请求: 在浏览器地址栏上直接输入URL或直接点击超链接,form标签中没有写method属性(默认是get)

请求数据的特点

GET请求在浏览器的地址栏中的请求行上发送数据并且数据会回显在浏览器的地址栏上, 且无法发送大数据量

  • GET请求发送数据的时候,会在URL后面添加一个?然后将请求参数挂在后面
  • GET请求只能发送普通的字符串并且长度有限制(不同的浏览器限制不同)

POST请求发送的数据存储在请求报文的请求体当中,所以不会回显到浏览器的地址栏上,并且可以发送大数据量(理论上没有长度限制)

  • POST请求可以发送任何类型的数据,包括普通字符串或视频、声音、图片等流媒体信息

在没有使用Ajax异步请求前,无论发送GET请求还是POST请求,都是以name=value&的格式发送请求数据,只不过请求数据的存储位置不同

  • URL请求和form表单的GET请求都会将请求参数以键值对的格式拼接到请求地址后面
  • form表单的POST请求会将请求参数以键值对的格式存储到请求报文的请求体中,name是表单input标签的name属性,value是表单input标签的value属性
  • 使用这种规定格式的数据我们可以通过拆分字符串拿到前端浏览器发送过来的数据并包装到一个java对象当中,然后执行相应的业务方法

缓存区别

GET请求支持缓存,当我们每次发完GET请求后,浏览器会将请求和对应的服务器响应结果缓存起来,缓存机制目的是为了提高用户的体验

当发起同样的GET请求时,浏览器会先从本地缓存中找该请求和其对应的响应结果,如果本地缓存中找不到才会去服务器上获取资源,然后再把响应结果缓存到本地

想要避免发起GET请求时浏览器走缓存,实现每一次发起GET请求都是去服务器上找资源,需要保证每一次GET请求的请求路径都不一样

  • 在请求路径的后面添加一个时刻变化的时间戳,如https://n.sinaimg.cn/finance/590/w240h350/20211101/7cabc342ff5b9dc018b4b00cc.jpg?t=系统毫秒数

POST请求不支持缓存,因为POST请求是用来修改服务器端资源的,浏览器去缓存服务器对POST请求的响应结果没有意义

应用场景

GET请求比较适合从服务器端获取数据,因为GET请求只是为了从服务器上获取数据,所以GET请求是绝对安全的,不会对服务器造成威胁

POST请求适合向服务器提交数据,如果你的请求中携带了敏感信息或者做文件上传时要传的数据不是普通文本都可以使用POST请求

  • 因为POST请求是向服务器提交数据,如果这些数据通过后门的方式进入到服务器当中是很危险的,所以一般情况下会选择拦截/监听POST请求

你可能感兴趣的:(web基础,okhttp,http,GET,POST)