说明:由于头条不支持上传文件,也不直接支持Markdown等,特别是不支持实时效果。上面几篇都是先转为html页面,再粘贴到头条,效果很差。所以这篇尝试v录屏为"动图"的方式来展示效果,可能消耗流量比较大。试试看效果怎么样!
- 初始化及全局设置
- 使用URL传参
参数放在Url里,形如:http://www.baidu.com?name=zhangsan&age=18, GET、Head请求用的比较多。优点是简单、方便,能被浏览器缓存;缺点是参数长度等限制较多,数据暴露url中,可能比较长。
- 使用路由传参
- 使用请求头
把请求数据放入请求头中,传给后端。当然也可以传多个数据。不过,请求头中传数据限制比较多,一般只传简单的数据:比如jwt token 。
- 使用请求体
把数据放在请求体中,发送到服务端。可以是简单的字符串,也可以是二进制数据(上传文件)、form表单项、编码过的form表单项、json、流式数据等形式,甚至是这个类型的组合。
说下个人的几点理解:
- 不管哪种请求体数据,都是放在请求体中,以二进制形式通过网络发往服务器,由服务器接收使用。客户端发送请求数据需要与服务端接收相配合;
- 客户端通过Content-Typey请求头设置,告诉服务端请求发送的是哪种类型的数据;服务端根据Content-Type来识别、解析请求数据。常见的类型有:multipart/form-data、application/x-www-form-urlencoded、application/json、text/plain等;
- ASP.NET Core中,默认为简单类型(如 int、string)的参数是从 URL 中获取的,也就是使用 [FromUri];复杂类型默认通过 [FromBody] 来绑定,这意味着需要发送 JSON 或 XML 格式的数据。asp.net 框架对json、xml格式数据进行了特殊处理,支持参数绑定等,可以使用[FromBody]特性,将请求数据绑定到对应的模型上;Form表单数据,可以使用[FromForm]特性,将请求数据绑定到对应的模型上;但普通的文本类型等不支持绑定等功能,需要从请求体中获取原始数据,自行处理。
- 一次可发送多种格式数据,由统一的分隔符分隔。服务端可以从请求头[Content-Type: multipart/mixed; boundary="d2e38916-df08-4fec-a40e-3e5179736f32"]拿到分隔符,然后根据分隔符将数据拆分出来。
HttpClient 中,请求体也分为这几种(常见的)类型:
1. MultipartFormDataContent
2. FormUrlEncodedContent
3. JsonContent
4. StringContent
5. ByteArrayContent
6. StreamContent
7. MultipartContent
普通请求体:
多段请求体:
- MultipartFormDataContent :Form表单
普通 Form表单,可以 MultipartFormDataContent 进行提交
- FormUrlEncodedContent :编码过的Form表单
经过URL编码的Form表单,可以 FormUrlEncodedContent 进行提交
- StringContent 普通文本(也包括很多格式,甚至是自定义格式。要和服务器配合)
- ByteArrayContent : 二进制数据
- StreamContent 流式数据
- JsonContent 最常用的数据格式
- MultipartContent 多段数据:组合多种方式,一次携带多种请求数据
- 文件上传 总结