本文主要是介绍WEB开发和WSGI--Django播客系统(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
DJango项目-1.WEB开发和WSGI
文章目录
- DJango项目-1.WEB开发和WSGI
- HTTP协议
- 安装httpd
- 无状态,有链接和短连接
- 协议
- URL组成
- HTTP消息
- Cookie技术
- Session技术
- WSGI
- WSGI APP应用程序端
- 服务器端
- CS即客户端、服务器编程。
- 客户端、服务端之间需要使用Socket,约定协议、版本(往往使用的协议是TCP或者UDP),指定地址和端口,就可以通信了。
- 客户端、服务端传输数据,数据可以有一定的格式,双方必须先约定好。
- BS编程,即Browser、Server开发
- Brower浏览器,一种特殊的客户端,支持HTTP(s)协议,能够通过URL向服务端发起请求,等待服务端返回HTML等数据,并在浏览器内可视化展示的程序。
- Server,支持HTTP(s)协议,能够接受众多客户端发起的HTTP协议请求,经过处理,将HTML等数据返回给浏览器。
- 本质上来说,BS是一种特殊的CS,即客户端必须是一种支持HTTP协议且能解析并渲染HTML的软件,服务端必须能够接收多客户端HTTP访问的服务器软件。
- HTTP协议底层基于TCP协议实现。
- BS开发分为端开发
- 客户端开发:或称前端开发。HTML、CSS、JavaScript等。
- 服务端开发:Python有WSGI、Django、Flask、Tornado等。
HTTP协议
安装httpd
- 可以安装httpd或nginx等服务端服务程序,通过浏览器访问,观察http协议
无状态,有链接和短连接
- 无状态:指的是服务器无法知道2次请求之间的联系,即使是前后2次同一个浏览器也没有任何数据判断出时同一个浏览器的请求。后来可以通过cookie、session来判断。
- 有链接:是因为它基于TCP协议,是面向链接的,需要3次握手、4次挥手。
- 短连接:Http 1.1之前,都是一个请求一个连接,而TCP的链接创建销毁成本高,对服务器有很大影响。所以,自Http 1.1开始,支持keep-alive,默认也开启,一个连接打开后,会保持一段时间(可设置),浏览器再访问该服务器就使用这个TCP链接,减轻了服务器压力,提高了效率。
协议
Http协议是无状态协议。
同一个客户端的两次请求之间没有任何关系,从服务器端角度来说,它不知道这两个请求来自同一个客户端。
URL组成
-
URL可以说就是地址,uniform resource locator统一资源定位符,每一个连接指向一个资源供客户端访问。
schema://host[:port#]/path/.../[;url-params][?query-string][#anchor]
-
例如,通过
http://www.xdd.com/pathon/index.html?id=5&name=python
访问静态资源时,通过上面这个URL访问的是网站的某路径下的index.html文件,而这个文件对应磁盘上的真实的文件。就会从磁盘上读取这个文件,并把文件的内容发回浏览器端。
- scheme模式、协议
- http、ftp、https、mailto等等。
- host:port
www.xdd.com:80
,80端口是默认端口可以不写,域名会使用DNS解析,域名会解析成IP才能使用。实际上会对解析返回的IP的TCP的80端口发起访问。
- /path/to/resource
- path,指向资源的路径。
- ?key1=value1&key2=value2
- query string,查询字符串,问号用来和路径分开,后面key=value形式,且使用&符号分割。
HTTP消息
-
消息分为Request、Response。
- Request:浏览器向服务器发起的请求
- Response:服务器对客户端请求的响应
- 请求报文由Header消息报头、Body消息正文组成(可选)
- 请求报文第一行称为请求行
- 响应报文由Header消息报头、Body消息正文组成(可选)
- 响应报头第一行称为状态行
- 每一次使用回车和换行符作为结尾
- 如果有Body部分,Header、Body之间留一行空行
- 请求报文由Header消息报头、Body消息正文组成(可选)
-
请求报文
- 请求消息行:请求放Method请求路径协议版本CRLF
- 请求方法Method
方法 说明 GET 请求获取URL对应的资源 POST 请求数据至服务端 HEAD 和GET类似,不过不返回响应报文的正文 - 请求消息行:请求放Method请求路径协议版本CRLF
-
常见的消息传递方式
-
GET方法使用Query String。例如:
http://www.xdd.com/pathon/index.html?id=5&name=python&name=linux
通过查询字符串在URL中传递参数,而URL在请求报文的头部第一行 -
POST方法提交数据
请求消息如下 POST /xxx/yyy?id=5&name=magedu HTTP/1.1 HOST: 127.0.0.1:9999 content-length: 26 content-type: application/x-www-form-urlencodedage=5&weight=80&height=170
请求时提交的数据是在请求报文的正文Body部分。
-
URL中本身就包含信息
http://www.xdd.com/python/student/001
-
-
响应报文
- 响应消息行:协议版本 状态码 消息描述CRLF
- 响应消息行:协议版本 状态码 消息描述CRLF
-
status code状态码
- 状态码在响应头第一行
1xx
提示信息,表示请求已被成功接收,继续处理2xx
表示正常响应200
表示返回了网页内容,即请求成功
3xx
重定向301
页面永久性移走,永久
- 状态码在响应头第一行
这篇关于WEB开发和WSGI--Django播客系统(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!