请求方法和响应码

  1. http标准请求方法
    1.  GET:获取资源,可以理解为读取或者下载数据;
    2. HEAD:获取资源的元信息;HEAD方法与GET方法类似,也是请求从服务器获取资源,服务器的处理机制也是一样的,但服务器不会返 回请求的实体数据,只会传回响应头,也就是资源的“元信息”。
    3. POST:向资源提交数据,相当于写入或上传数据;
    4. PUT:类似POST;多用于更新数据
    5. DELETE:删除资源;
    6. CONNECT:建立特殊的连接隧道;
    7. OPTIONS:列出可对资源实行的方法;
    8. TRACE:追踪请求-响应的传输路径。
  2. 安全与幂等
    1. 在HTTP协议里,所谓的“安全”是指请求方法不会“破坏”服务器上的资源,即不会对服务器上的资源造 成实质的修改。
    2. 、所谓的“幂等 幂等”实际上是一个数学用语,被借用到了HTTP协议里,意思是多次执行相同的操作,结果也都 是相同的,即多次“幂”后结果“相等”。
  3. 响应码
    1. 1××:提示信息,表示目前是协议处理的中间状态,还需要后续的操作;
    2. 2××:成功,报文已经收到并被正确处理;
      1. “200    OK”是最常见的成功状态码,表示一切正常,服务器如客户端所期望的那样返回了处理结果,如果 是非HEAD请求,通常在响应头后都会有body数据。
      2. “204    No    Content”是另一个很常见的成功状态码,它的含义与“200    OK”基本相同,但响应头后没有 body数据。所以对于Web服务器来说,正确地区分200和204是很必要的。
      3. “206    Partial    Content ”是HTTP分块下载或断点续传的基础,在客户端发送“范围请求”、要求获取资源的 部分数据时出现,它与200一样,也是服务器成功处理了请求,但body里的数据不是资源的全部,而是其中 的一部分,状态码206通常还会伴随着头字段“Content-Range Content-Range”
    3. 3××:重定向,资源位置发生变动,需要客户端重新发送请求;
      1. “301    Moved    Permanently ”俗称“永久重定向”,含义是此次请求的资源已经不存在了,需要改用改用新 的URI再次访问。
      2. 与它类似的是“302    Found 302    Found”,曾经的描述短语是“Moved    Temporarily ”,俗称“临时重定向”,意思是 请求的资源还在,但需要暂时用另一个URI来访问。
      3. 虽然301和302的效果差不多,但是应用场景还是有很大区别,特别是浏览器缓存,302浏览器不会做缓存优化
      4. “304    Not    Modified ”    是一个比较有意思的状态码,它用于If-Modified-Since等条件请求,表示资源未修改,用于缓存控制。它不具有通常的跳转含义,但可以理解成“重定向已到缓存的文件”(即“缓存重定
      5. 向”)
    4. 4××:客户端错误,请求报文有误,服务器无法处理;
      1. “400    Bad    Request ”是一个通用的错误码,表示请求报文有错误,但具体是数据格式错误、缺少请求头还 是URI超长它没有明确说,只是一个笼统的错误,客户端看到400只会是“一头雾水”“不知所措”。所 以,在开发Web应用时应当尽量避免给客户端返回400,而是要用其他更有明确含义的状态码。
      2. “403    Forbidden ”实际上不是客户端的请求出错,而是表示服务器禁止访问资源。原因可能多种多样,例 如信息敏感、法律禁止等,如果服务器友好一点,可以在body里详细说明拒绝请求的原因,不过现实中通 常都是直接给一个“闭门羹”。
      3. “404    Not    Found ”可能是我们最常看见也是最不愿意看到的一个状态码,它的原意是资源在本服务器上未 找到,所以无法提供给客户端。但现在已经被“用滥了”,只要服务器“不高兴”就可以给出个404,而我 们也无从得知后面到底是真的未找到,还是有什么别的原因,某种程度上它比403还要令人讨厌。
      4. 405    Method    Not    Allowed:不允许使用某些方法操作资源,例如不允许POST只能GET;
      5. 406    Not    Acceptable:资源无法满足客户端请求的条件,例如请求中文但只有英文;
      6. 408    Request    Timeout:请求超时,服务器等待了过长的时间;
      7. 409    Conflict:多个请求发生了冲突,可以理解为多线程并发时的竞态;
      8. 413    Request    Entity    Too    Large:请求报文里的body太大;
      9. 414    Request-URI    Too    Long:请求行里的URI太大;
      10. 429    Too    Many    Requests:客户端发送了太多的请求,通常是由于服务器的限连策略;
      11. 431    Request    Header    Fields    Too    Large:请求头某个字段或总体太大;
    5. 5××:服务器错误,服务器在处理请求时内部发生了错误。
      1. “500    Internal    Server    Error ”与400类似,也是一个通用的错误码,服务器究竟发生了什么错误我们是不知 道的。不过对于服务器来说这应该算是好事,通常不应该把服务器内部的详细信息,例如出错的函数调用栈 告诉外界。虽然不利于调试,但能够防止黑客的窥探或者分析。
      2. “501    Not    Implemented ”表示客户端请求的功能还不支持,这个错误码比500要“温和”一些,和“即将 开业,敬请期待”的意思差不多,不过具体什么时候“开业”就不好说了。
      3. “502    Bad    Gateway ”通常是服务器作为网关或者代理时返回的错误码,表示服务器自身工作正常,访问后
      4. “503    Service    Unavailable ”表示服务器当前很忙,暂时无法响应服务,我们上网时有时候遇到的“网络服 务正忙,请稍后重试”的提示信息就是状态码503。报文里通常还会有一个“Retry-After“字段,表示多久后再尝试重连接
    6. 一般交互的都是json格式,会内部再定义一个code和msg,然后定义一个参数错误code,在 msg中提示错误具体原因。
 
 
posted @ 2020-07-13 00:00  浪波激泥  阅读(203)  评论(0编辑  收藏  举报