美文网首页
request研究:针对get,post等协议及表单等reque

request研究:针对get,post等协议及表单等reque

作者: 爱你为你做饭 | 来源:发表于2019-09-27 15:30 被阅读0次
    http客户端和服务端交互协议

    http cs两端交互协议通常包含:get/header/post/put/delete/,有时会把这几个对比成客户端对服务端数据的增(post)删(delete)改(put)查(get),即:

    • 幂等性:理解http这几种交互不得不说这个特性:幂等性的语义是:一次或者多次操作不会对数据造成错误的影响,这个是相对的,取决于后端系统的设计及其实现。下面说的交互协议都是基于标准讨论他的幂等性。
    • get:通常将参数直接拼接到url上或者cookie上,多用于数据的查询(参数不具有私密性),单次或者多次不会对数据造成什么影响,具有幂等性。
    • header:类似于get,不同的是客户端只需要服务端响应header即可,具有幂等性
    • delete:删除数据,具有幂等性
    • post: 参数不是拼接到url上,而是封装到body中,多用于增删数据,通常请求多次会执行多次操作,对数据不友好,不具有幂等性
    • put:类同于post,也多用于增删数据,put通常是存在即更新,不存在即创建,所以其具有幂等性。
    • 在协议的具体使用中,通常后端都会兼容处理
    • post和get之间的区别:http协议的约定中,get使用url或者cookie传递参数数据,post使用body传输参数数据 由于浏览器对url大小或者服务端对于url大小有限制,所以get参数通常有限制,post不然使用body无限制 get通常都是明文传输,post参数安全级别更高 get通常都是查询数据幂等性,post不然,不具有幂等性。
    • post和put之间的区别: 两者雷同,都多用于增改数据,不同的是通常约定post是新增,多次访问会创建多个资源,put不然增或者更新,即post非幂等性,put幂等性。
    • 协议间的幂等性取决于后端的设计及其处理约定。
    链接请求数据结构类RequestBody(参数的数据结构封装,普通参数/表单参数/文件参数)

    结合上面协议的理解,对于参数的数据结构封装,okhttp提供了三个类RequestBody/FormBody/MultyPartBody进行封装,先了解接口协议通常传递方式:

    • get url参数拼接: 姜参数直接拼接到url上以get方式传递访问
    • cookie传递参数:后续补全
    • json格式:将所有的参数封装到一个json中去
    • 表单格式:以key/value的方式将参数批量粉砖传递
    • 文件格式:类表单格式,是json和表单的结合使用,具体参考下面:
      下面是对上面三个类的介绍:

      RequestBody: 抽象类:form/multypart 两个类的父类,主要有下面几个方法: requestbody方法集合
      【备注:】isDuplex()和isOneShot()两个api不明白,待后续完善。
      使用方法: requestbody使用方法

      【备注:】MediaType参考下面文章:标识了文件或者后面内容的格式

      FormBody:okhttp对于表单格式数据的封装类,即: image.png
      FormBody的使用:对象的创建符合创建者模式,即:
      formbody使用
      MultyPartBody:带有文件的表单参数,即: multypartbody方法说明
      MultyPartBody的使用:
      MultyPartBody的使用
      【备注:】注意type的设置,对应的值参考上面的图的第一个大圈中标识。
    链接请求封装类Request
    okhttp提供了链接请求的封装类Request,封装了请求的url,请求协议方法,添加header等,具体使用参考如下: request封装类方法

    【备注:】缓存策略可以参考下面文章及其后续的okhttp的缓存研究分析

    掘金:post和get区别的深入理解
    理解http协议的幂等性
    常见文件格式标识符
    http协议header缓存策略
    okhttp基本用法
    okhttp put传输文件

    相关文章

      网友评论

          本文标题:request研究:针对get,post等协议及表单等reque

          本文链接:https://www.haomeiwen.com/subject/mlzdyctx.html