HTTP & Request notes

    科技2022-08-03  113

    HTTP & requests

    1. HTTP1.1 工作原理1.2 消息结构请求消息请求方法 响应消息响应头信息状态码 2. Request

    1. HTTP

    HTTP(HyperText Transfer Protocol,超文本传输协议)是一种网络传输协议,所有的WWW文件都必须遵守这个标准。 HTTP基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

    1.1 工作原理

    事务处理(HTTP操作)可分为以下四步: 客户端 <—建立连接—> 服务端 客户端 —请求—> 服务端 客户端 <—响应— 服务端 客户端 <—断开连接—> 服务端 在上述过程中,HTTP使用URL建立连接和传输数据。建立连接后,HTTP通过RFC5322和MIME/RFC2045格式来传送数据消息。HTTP具有以下三个特点: 1)无连接:每次连接只处理一个请求,请求处理完成后断开连接。 2)媒体独立:基于 MIME-type 可以传输不同类型数据。 3)无状态:对事务处理没有记忆能力。

    1.2 消息结构

    请求消息

    客户端请求消息有请求行(request line),请求头部(header),空行和请求数据四部分组成(图1)。 下面展示了请求消息的一个实例。

    #request demo GET /hello.txt HTTP/1.1 #request line User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3 #发出请求的用户信息 Host: www.example.com #指定请求资源的Intenet主机和端口号 Accept-Language: en, mi #语言

    请求方法

    方法描述GET请求指定的页面信息,并返回实体主体。HEAD类似于GET,但仅返回报头。POST向指定资源提交数据请求处理,数据包含在请求体中。PUT用客户端传送的数据取代指定的文档的内容。PATCHPUT的补充,用来对已知资源进行局部更新。DELETE请求服务器删除指定的页面。CONNECTHTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。OPTIONS允许客户端查看服务器的性能。TRACE回显服务器收到的请求,主要用于测试或诊断。

    响应消息

    服务端响应消息由状态行,消息报头,空行和响应正文组成(图2)。

    #response demo HTTP/1.1 200 OK #状态行 Date: Mon, 27 Jul 2009 12:28:53 GMT # Server: Apache # Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT # ETag: "34aa387-d-1568eb00" # Accept-Ranges: bytes # Content-Length: 51 # Vary: Accept-Encoding # Content-Type: text/plain #

    响应头信息

    应答头说明Allow服务器支持哪些请求方法。Content-Encoding文档的编码方法。Content-Length内容长度。Content-Type文档属于何种MIME类型。Date当前格林威治时间。Expires文档失效期,过期不再缓存。Last-Modified文档最后改动时间。Location文档位置。Refresh刷新文档的时间。Server服务器名字。Set-Cookie设置和页面关联的cookie。WWW-Authenticate客户应该在Authorization头中提供什么类型的授权信息。

    状态码

    分类描述1**信息,服务器收到请求,需要请求者继续执行操作。2**成功,操作被成功接收并处理。3**重定向,需要进一步的操作以完成请求。4**客户端错误,请求包含语法错误或无法完成请求。5**服务器错误,服务器在处理请求的过程中发生了错误。

    HTTP 教程


    2. Request

    import requests #发送请求:.get(); .post(); .delete(); .head(); .options() r=requests.get('https://api.github.com/events') #params=; headers=; cookies=; timeout=; allow_redirects=; r=requests.post('https://api.github.com/events') #data=; files=; #响应内容:.status_code; .raise_for_status(); #响应内容:.headers; .encoding; .text; .json();

    快速上手

    Processed: 0.043, SQL: 8