HTTP&JSON基础

一、HTTP协议介绍

RFC 2616定义HTTP1.1:用于从WWW服务器传输超文本到 本地浏览器的传送协议

二、URI

标识并定位资源,有两种表现形式:URL,URN

1.URL(Uniform Resource Locator):描述了一台特定服务器上某资源的特定位置

2.URN(Uniform Resource Name):资源的唯一名称,与位置无关

3.URL字符集和编码:

用ASCII码来编码,用转义字符来对非英语字符转移

保留字符集:%?#&=;:+等

三、Req&Resp

每个request及其response构成一个事务。

每个request和response由三部分构成:status line,header,(data)body

1.Req&Resp的方法

GET:获得/.查询某个资源,应该是安全的和幂等的。

HEAD:获得报文首部,与GET方法一样只是不返回报文主体。通常用于确认URL的有效性检查或者确认资源更新的日期时间。

POST:向服务器传输数据,通常用来支持HTML的表单。

PUT:写入文档(类似insert)

DELETE:删除文档(类似delete)

OPTIONS:询问支持的方法:查询指定的资源所支持的方法。

2.response状态码

1xx:信息状态码

2xx:成功

3xx:重定向状态码。资源被移动,一般附带Location首部,告知Request新的位置

  • 301:Moved Permanently 永久性重定向。资源分配了新的URI,以后应使用新的URI来获取。
  • 302:Found 临时性重定向。请求的资源已被分配了新的URI,期望本次用新的URI访问。将来的请求仍使用老的URI
  • 304:Not Modified 资源没有修改,Client可以在cache中获取。

4xx:客户端错误状态码

  • 400:Bad Request 报文语法错误
  • 403:Forbidden 访问被服务器拒绝
  • 404:Not Found

5xx:服务器本身发生错误

  • 500:Internal Server Error
  • 502:Bad Gateway 服务器遇到了上游的无效响应
  • 503:Service Unavailable 服务器暂时无法处理请求。

四、Range Request

可以断点续传,或者大文件分段传输

Server端:Accept-Ranges:bytes  //默认是字节

Content-Range:bytes 返回资源字节范围和总字节数

client端:发送Rang请求部分资源

五、Cache

与缓存相关的HTTP扩展消息头。

六、Cookie&Session

为了解决HTTP无状态性,而记录用户的状态以及个性化信息,以实现持久化会话。

Cookie放在client端,Session放在服务端。

1.Cookie:cookie的name/value中不允许包含分号,逗号和空格符(可采用 Base64编码)

String name;//cookie的名字,同一域下必须唯一

String value;//cookie的值,敏感信息不要明文!记得加密或者混淆

String domain;//cookie的作用域,不能跨域 int maxAge = -1;//默认有效期,只存在本次会话

String path;//作用的context,包括当前context以及其子context

boolean secure;//是否安全传输,如果为true的话,则只有在https时才发送cookie

2.Session:消耗Server内存,不支持分布式(单机);如果使用需要独立且支持分布式(如Qsession)

七、Connection&Proxy

1.connection

  • Tcp Slow Start:TCP在启动时,会限制连接的最大速度,数据传输成功后随着时间而提高传输速度
  • Keep-Alive:在HTTP事务结束后仍然保持TCP连接打开状态,为后续事务重复利用,直到client或者server关闭。(HTTP1.0/0.9版本中,默认不开启keep-alive,在HTTP1.1以后默认keep-alive)。keep-alive必须随着所有希望保持连接的request一起发送,如果某一次request没带,服务端在response返回之后关闭。

八、GSON的优点

  1.  语言/平台无关性: JSON采用完全独立于语言/系统的文本格式 。
  2.  易于人阅读和编写。
  3.  轻量级,易于机器解析和生成(对比XML)。

你可能感兴趣的:(基础技术总结)