WSGI是一套接口规范。一个WSGI程序用以接受客户端请求,传递给应用服务器,再返回服务器的响应给客户端。WSGI程序通常被定义成一个函数,当然你也可以使用类实例来实现。
def wsgi_app(environ, start_response):
method = environ['REQUEST_METHOD']
path = environ['PATH_INFO']
# Parse the query parameters
params = cgi.FieldStorage(environ['wsgi.input'], environ=environ)
start_response('200 OK', [('Content-type', 'text/plain')])
environ['REQUEST_METHOD']
代表请求类型如GET、POST、HEAD等。
environ['PATH_INFO']
表示被请求资源的路径。
调用 cgi.FieldStorage()
可以从请求中提取查询参数并将它们放入一个类字典对象中以便后面使用。
start_response
参数是一个为了初始化一个请求对象而必须被调用的函数。 第一个参数是返回的HTTP状态值,第二个参数是一个(名,值)元组列表,用来构建返回的HTTP头。
WSGI简化了编写Web app的复杂度,使程序员不必关注底层的数据传输而专注于Web本身??蚣茉蚧赪SGI进一步抽象,用一个函数处理一个URL。而URL与函数的绑定,称为路由(route),而这些就交给Web框架来做了。Python Flask的路由,是由装饰器实现的。例如:
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def index():
return '<h1>Home</h1>'
像index()
这样的函数称为视图函数(view function)。
@app.route('/user/<name>')
def user(name):
return '<h1>Hello, %s!</h1>' % name
<name>
属于动态部分,这是一个动态路由。