浅浅记录一哈HTTP接口

1、HTTP 简介

  什么是HTTP?  

    HTTP是目前最为广泛的一种网络协议,所有的万维网文件都必须遵守这个标准。

    设计HTTP的目的:是为了提供一种发布和接受HTML页面的方法。

    HTTP的历史由来:(可自行百度...)

  HTTP的主要特点:

    1)、支持客户端/ 服务器 模式。

       客户端向服务器发送请求时,只需要传送请求方法 和 路径。

       常用的请求方式有 POST 和 GET。(还有其他的请求方式,详情如下.....)

    2)、简单。

       由于HTTP简单,服务器的程序规模小,因而通信速度就比较快。

    3)、灵活。

       HTTP允许传输任意类型的数据对象。

       传输的数据类型由Content-Type 标记识别。

    4)、无连接。

       限制每次连接,使其每次只处理一个请求。

       服务器处理完客户端的请求,并接收客户端返回的应答后,就断开连接。

       这种连接方式 可以节省传输时间。

    5)、无状态

       HTTP是无状态协议,无状态是指HTTP协议对事物的处理没有记忆能力。

       缺少状态意味着如果后续处理需要前面的信息,则必须重新上传,这样会导致每次连接传送的数据量较大;反之,如果后续处理不需要前面的信息,则应答速度就会较快。

2、HTTP请求

  HTTP请求的组成部分:统一资源定位符(URL)、请求方法(Method)、头(Header)、请求体(Request-body)

    统一资源定位符:(Uniform Resource Locator,URL)是用于完整的描述互联网上网页和其他资源 地址的一种标识方法。可以通过这种方法对网络上的资源进行定位和操作。

       URL的一般表现形式为:<协议>://<主机名>:<端口>/<路径>/<文件名>

                如:http://www.baidu.com

             <协议>:是指获取互联网资源所使用的协议。HTTP请求是使用的HTTP协议,除此之外,还有 文件传输协议(Fail Transfer Protocol,FTP)。

             <主机>:是指目标文件存放在哪一台主机上,可以给出 域名 或者 IP地址。

             <端口>:是服务器监听的端口,HTTP默认为 80,FTP默认为 21。

             <路径 - 文件名>:是为了进一步给出资源在服务器上的位置,但名称是 虚拟的。

       对于动态网页,用户访问时还需要提供访问动态网页的参数,是为 查询串(Query String)。

             具体表现形式为:<协议>://<主机名>:<端口>/<路径>/<文件名>?<参数1>=<值1>&<参数2>=<值2>&......(后面再多参数同上)

    方法:(Method)HTTP请求定义了与服务器交互的不同方法,基本方法有四种:POST、GET、PUT、DELETE。

        可以简单理解为:URL地址用于定位描述一个网络上的资源,而这四种交互方法则可以对URL定位的资源进行 改、查、增、删 等操作。

          POST:一般用于更新资源。   

          GET:一般用于获取(查询)资源。

          PUT:一般用于上传资源。

          DELETE:一般用于删除资源。

      除了上面介绍的四种交互方法,HTTP请求还包含 PATCH、COPY、HEAD、OPTIONS、LINK、UNLINK、PURGE、LOCK、UNLOCK、PROPFIND、VIEW等方法。

      在此处,POST 和 GET  的区别 小做赘述:

      1)、提交数据的方式不同

        GET:请求数据会直接附在URL后面,显示在地址栏。

           格式:以 ? 分割URL和传输参数,多个参数以 & 连接。如果数据是英文字母、数字,则直接发送

              如果是空格 ,则转换为 + 后发送

              如果是中文、其他字符,则会用Base64(或其他加密方式) 加密字符串,转换后发送

        POST:提交数据会放在HTTP请求的 请求体 <request-body>中。

      2)、传输数据的大小不同。虽然HTTP请求没有对传输数据的大小进行限制,HTTP规范也没有对URL的长度进行限制,但在实际开发中还会存在一些限制。

      3)、安全性不同

        POST方式 比 GET方式的安全性更高些。通过GET提交用户名和密码时,会明确显示在地址栏,如果浏览器有缓存的情况下,则通过查询浏览器的使用记录会泄露账户密码。

    头:(Header)

    体:(Body)

      HTTP请求报文是面向文本的,报文中的每一个字段都是 ASCII码串,各个字段的长度是不确定的。请求报文的一般格式如下:

      <request-line>    请求行

      <Header>      头

      <blank line>     空行

      [<request-body>]   请求体[请求数据]

3、HTTP响应

  什么是HTTP响应?

    将HTTP请求发送到服务器后,服务器会给出相应的应答,服务器返回的应答消息 称为 HTTP响应。

  HTTP响应报文的组成部分?

    三个部分,与请求报文类似,一般格式如下:

       <status-line>      状态行(响应结果状态码,用来说明所请求的资源情况)        

       <Header>       消息报头

       <blank line>      空行

       [<response-body>]   响应正文(响应结果数据)

    状态行的格式为:HTTP-Version  Status-Code  Reason-Phrase CRLF。

       HTTP-Version:表示服务器HTTP(协议)的版本

       Status-Code:   表示服务器返回的响应状态码。由三位数组成,有如下五种取值可能,以及常见的状态码及说明:

              1xx:指示信息。表示信息已接收,会继续处理。

            2xx:成功。表示请求已被成功接收、理解和接受。

              200 OK:客户端请求成功。

            3xx:重定向。表示要完成请求,必须进行更进一步的操作。

            4xx:客户端错误。请求语法有误 或者 请求无法实现。

              400 Bad Request:客户端请求有语法错误,不能被服务器所理解。

              401 Unauthorized:客户端请求未经授权。

              403 Forbidden:服务器未收到请求,但拒绝提供服务。

              404 Not Found:请求资源不存在,如输入了错误的URL,客户端请求在服务器上未定位到该URL标记的资源。

            5xx:服务器错误。服务器未能实现合法的请求。

              500 Internal Server Error:服务器发生了不可预期的错误。

              503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

       Reason-Phrase:表示状态代码的文本描述

       CRLF:    表示一个回车符 和一个 换行符

4、数据交换格式

  此处,记录一种 客户端 与 服务器之间的数据交换格式。

    JSON:JS对象标记(JavaScript Object Notation - JSON) 是一种轻量级的数据交换格式。

      它是基于ECMAScript(W3C制定的JavaScript规范) 的子集,采用完全独立于编程语言的文本格式来存储和表示数据。

      简洁和清晰的层次结构使得JSON成为理想的数据交换语言, 其易于阅读和编写,同时也易于机器解析和生成,并能有效的提升网络传输效率。

      因此 HTTP(协议)请求的接口响应一般为JSON格式。

      JSON的语法规则:

      用大括号保存对象、用键值对表示对象、用逗号分隔每个对象、用中括号保存数组

      示例:{"name":"Lily", "age":"32", "sex":"male"}

原文地址:https://www.cnblogs.com/ygn6666/p/12650833.html