正文
请求通常会传递用户创建的信息,导致 web 应用执行某些动作。输入自己的信息,来注册某个网站就会用到
POST
请求,请求中会包含你输入的数据。
和
GET
请求不同的是,
POST
请求通常会导致 web 应用状态的改变。上面提及的例子中,表单被提交后,一个新的用户会被创建。还有一点不同,
POST
请求的结果可能不会返回 HTML 数据给客户端,客户端需要通过
response code
来判断操作是否成功。
HTTP response code
正常情况下,web server 会返回 200 的 response code,意思是:我已经完成了你要我做的事情,并且一切都没有问题。
response code
是三位的数字,每次应答都要包含一个 response code,来标识请求的结果。
200
表示 OK,是
GET
方法常见的返回值。
POST
请求经常会返还
204
(No contnet),表示:一切正常,但是我没有数据可以展示给你。
还需要注意的是:
POST
请求发送给的 url,可能和数据发送出去的 url 不同。继续以我们的注册页面为例,注册表可能位于
http
:
//foo.com/signup
,点击
submit
之后,包含着注册数据的
POST
请求可能被发送到
http
:
//foo.com/process_signup
。
POST
请求要发送到的地址,一般在注册表格的
HTML
源码里指定。
Web 应用
掌握
GET
和
POST
方法就能做很多事情,因为它们是 web 上最常用的两个方法。总结一下,web 应用就是接收
HTTP
请求,然后返回
HTTP
应答,一般是包含请求数据的
HTML
。
POST
方法会导致 web 应用执行某些动作,例如在数据库添加一条记录。当然还有其他的
HTTP
方法,但目前我们只需要关心
GET
和
POST
就足够啦。
最简单的 web 应用长什么样呢?我们就来写一个监听在
80
端口的 web 应用,一旦和客户端建立连接,就等待客户端发起请求,并返回非常简单的
HTML
。
这个程序是这样的:
import socket
HOST =