快速切断阀,3u8794,贵州大学人文学院
1 HTTP概念
把握三个点: 1 HTTP协议(超文本传输协议) HTTP是一个基于TCP/IP通信协议来传递数据,默认端口80 2 HTTP是无连接(限制每次连接只处理一个请求),无状态的(对于事务处理没有记忆能力) 3 HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。
2 HTTP协议结构
HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。流程大致 : web Browser -- HTTP Protocol -- HTTP Server -- CGI Program -- Database 客户端 c:request 请求行 request line 请求方法 url 协议版本 请求头 header 头部字段名 : 值 请求主体 例如 GET /hello.txt HTTP/1.1 User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3 Host: www.example.com Accept-Language: en, mi 服务端 s:response 状态行 HTTP/1.1 200 OK 协议 状态码 注释 消息报头 Date Content-Type content-Lnegth 响应正文 content 例如: 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
3 HTTP协议请求方式
PUT 创建资源 从客户端向服务器传送的数据取代指定的文档的内容。 POST 更新资源 post请求有消息体,可以携带大量数据,数据放在消息体中 GET 获取资源 get请求无消息体,只能携带少量数据,数据放在url中 HEAD 获取报头资源 OPTIONS 允许客户端查看服务器的性能。 DELETE 删除指定页面资源 TRACE 回显服务器收到的请求,主要用于测试或诊断 CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
4 HTTP响应头信息
Allow 服务器支持的方法 content-encoding 文档编码方法 content-length 内容长度 content-type 文档所属类型 date 当前的时间 location 客户端去哪提取文档 reflesh 浏览器应在多少时间刷新文档 server 服务器名字 set-cookie 设置页面关联的cookie last-modified 文档最后的改动时间 Host 域名 Date 时间 User-Agent 浏览器版本
5 HTTP状态码
5 种类型 1** 信息,服务器收到请求,需要请求者继续执行操作 2** 成功,操作被成功接收并处理 3** 重定向,需要进一步寻找资源 4** 客户端错误,请求包含语法错误或无法完成请求 5** 服务器错误,服务器在处理请求的过程中发生了错误 常见的http状态码 200- 请求成功 301-资源被永久转移到其他URL 404 请求资源页面不在 500 内部服务器错误
6 HTTP对象HttpRequest
HttpRequest代表来自客户端的Http请求 原理:request与response是页面发生请求时,Django内置模块把data数据包装成HttpRequest对象,然后Django加载合适的view方法,将HttpRequest对象作为第一个参数传给view方法,则其返回的结果就是HttpResponse对象. HttpRequest属性列表: path 请求页面的全路径,不包括域名—例如, "/django/student/" method 请求类型,大写表示, GET,POST 等 GET 包含所有HTTP GET参数的Queryset对象,获取通过找到key获取value POST 包含所有HTTP POST参数的Queryset对象,获取通过找到key获取value COOKIES 包含所有cookies的Python字典对象,键值对Keys和values都是字符串 META 包含所有可用HTTP头部信息的字典(端口,主机名,主机头信息等) FILES 包含所有上传文件的Queryset对象,对应 <input type="file" name="" />标签中name属性的值 注意:只有在请求方法是POST,并且在<form>有enctype="multipart/form-data"属性时FILES才拥有 数据。否则,FILES 为空 user 是一个django.contrib.auth.models.User 对象,代表当前登录的用户,需要引入使用 from django.contrib.auth import User 实例化 user = User() session 唯一可读写的属性,代表当前会话的字典对象。只有激活Django中的session支持时该属性才可用 当服务器session存储数据时,可以在request中调用 request.session['key']
7 HTTP对象HttpResponse
HttpResponse代表来自服务端的Http响应 HttpResquest是由Django自动创建,但是HttpResponse则必须由我们自己创建,每个view方法必须返回一个HttpResponse对象 from django.http.response import HttpResponse HttpResponse常见的方法 HttpResponse.has_header(header) 判断响应头是否有给定的名称,返回True or False,不区分大小写 HttpResponse.set_cookie() 通知客户端设置cookie信息,一般存储sessionid+value用于session取值 HttpResponse.delete_cookie 清除cookie信息 HttpResponse.write(content) 写入content至报文中 HttpResponse.flush() 将缓存区的内容写入报文 HttpResponse.tell() 移动文件中的操作指针 HttpResponse 子类 class HttpResponseRedirect 资源重定向 class HttpResponseNotFound 资源未找到 404 class HttpResponseBadRequest 错误请求 400 class HttpResponseForbidden 无权限访问 403 class HttpResponseServerError 服务器错误 500
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Python爬虫:Request Payload和Form Data的简单区别说明
浅谈Python中threading join和setDaemon用法及区别说明
Python3-异步进程回调函数(callback())介绍
python继承threading.Thread实现有返回值的子类实例
Python中使用threading.Event协调线程的运行详解
网友评论