• 浅浅记录一哈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"}

  • 相关阅读:
    4 行代码实现将文件读到 C++ string
    Adaptive AUTOSAR 学习笔记 15
    Adaptive AUTOSAR 学习笔记 14
    Adaptive AUTOSAR 学习笔记 13
    Adaptive AUTOSAR 学习笔记 12
    Adaptive AUTOSAR 学习笔记 10
    Adaptive AUTOSAR 学习笔记 9
    Linux 彻底卸载从源码安装的 boost 库
    Adaptive AUTOSAR 学习笔记 8
    grep awk sed 正则表达式,只把匹配的内容(不是整个匹配行)提取出来,保存到 shell 脚本变量
  • 原文地址:https://www.cnblogs.com/ygn6666/p/12650833.html
Copyright © 2020-2023  润新知