vergil wang


Hi, i'm vergilw, i'm a iOS developer from China, i'm living in Hubei,Wuhan.


iOS Developer

HTTP Header - ContentType

终端开发少不了和服务端进行网络交互,在大部分平台成熟的框架里,对于API交互封装的非常好,但是如果你需要自己封装网络层的时候就需要了解HTTP Header里的一些基本概念。本文主要介绍ContentType和Accept。

ContentType

Content-Type用于指示资源的MIME类型。在终端开发中常用的ContentType有三种类型:application/x-www-form-urlencoded、multipart/form-data、application/json

HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。协议规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。服务端会根据的Request Header里的ContenType值,将请求资源进行相应的解码。

HTTP Method

HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT。而常用的是GET、POST、PUT、DELETE、PATCH,不同的服务端开发框架支持不同,例如PHP和JAVA作为服务端语言,那么你大部分请求都是GET和POST,而如果是Python、Ruby等,那么上述常用的Method可能都会用到。这是由于该语言平台的主流框架所致,后者对于RESTful规范更加友好。

  • application/x-www-form-urlencoded

    application/x-www-form-urlencoded主要用于GET请求,例如我们在GET请求里提交了一些中文字符,由于HTTP协议以ASCII码传输,并不支持中文字符,此时就会对中文进行encode后再发送给服务端,服务端接受数据decode后才能获取正确的中文字符。

  • multipart/form-data

    multipart/form-data用于POST、PUT请求。multipart/form-data主要用于数据分片上传,当我们需要提交文件类型数据时使用此方式,当文件过大时,会分成多段上传保证成功率。

  • application/json

    application/json用于多种Method,在RESTful普及的今天特别常用,因为它能够组装复杂的键值对数据,将数据模型通过JSON序列化以对象的方式传给服务端。典型的使用场景是终端以POST、PUT方式发送JSON序列化对象直接创建数据。


Accept

Accept 请求头用来告知服务端终端可以处理的内容类型,这种内容类型用MIME类型来表示。它与ContentType不同的是,它可以同时指定多个值。

Content-Type 参考文章

Accept 参考文章

最近的文章

ABI Stability

随着Swift5一起发布的,还有ABI稳定。这对于Swift的发展来说意味深远。作为Apple平台下开发者,了解这个十分必要。什么是ABI?在运行时,通过Swift编写的二进制程序通过ABI和其他的程序库或组件进行交互。ABI是Application Binary Interface的缩写,它是一个规范,通过这个规范,所有被独立编译的二进制实体才能被链接在一起并执行。这些二进制实体必须在一些很低层的细节上达成一致,例如:如何调用函数,如何在内存中表示数据甚至是如何存储以及访问metad...…

继续阅读
更早的文章

揭秘iOS布局

在你刚开始开发 iOS 应用时,最难避免或者是调试的就是和布局相关的问题。通常这种问题发生的原因就是对于 view 何时真正更新的错误理解。想理解 view 在何时是如何更新的,需要对 iOS run loop 和相关的 UIView 方法有深刻的理解。这篇文章会介绍这些关联,希望能帮你澄清如何用 UIView 的方法来获得正确的行为。一个 iOS 应用的主 Run loop一个 iOS 应用的主 Run loop 负责处理所有的用户输入事件并触发相应的响应。所有的用户交互都会被加入到一个...…

继续阅读