您的位置:首页 > 编程语言 > Python开发

python学习笔记-基于flask的web服务提供

2017-01-17 14:19 771 查看

背景:

在python下提供web服务。根据请求的url中的关键字和参数进行具体处理。

流程:

客户端->web 服务器->WSGI->application

客户端发送 HTTP 请求,web 服务器在一个地址的端口上等待接收,一旦收到,会将请求通过 WSGI 交给 application 处理,application 就是 flask 框架编写的应用,application 对消息处理后,也通过 WSGI 返回 HTTP 响应给 web 服务器,由服务器发送给客户端。

所有 Flask 程序都必须创建一个程序实例,实例是 Flask 类的对象,创建实例方法如下:

from flask import Flask
app = Flask(__name__)


web 服务器

常见的有 uWSGI、Nginx、gunicorn 等

flask 集成了一个开发用的web服务器,同一时间只能处理一个请求。使用 flask 集成的服务器:

if __name__ == '__main__':
app.run()


代码:

# -*- coding: utf-8 -*-

from flask import Flask
from flask import request
from flask import make_response
from flask import redirect#重定向
from flask import abort #异常抛出
app = Flask(__name__)

# 对 url 中,/user/ 后面的内容进行匹配、截取,赋值给变量 name,默认匹配字符串,可以指定类型。例如,/user/<int:id> 只匹配 id 为整数的 URL
@app.route('/user/<name>')

def hello_world(name):#变量 name 作为参数传递给函数 user[关键字参数]
#可以根据不同的name关键字做不同的处理逻辑
if name == "print":
p1 = request.args.get('p1', 1, type=int)#从 url 获取 键为 p1 的 值转换为整形,如果没有 或 转换失败,默认为 1
p2 = request.args.get('p2', 1, type=str)
return "OK" + str(p1) + " " + str(p2)
elif name == "return":
print(request.args)
response = make_response('<h1>This document carries a cookie!</h1>')#采用Response 对象返回响应
# response.headers()
response.set_cookie('answer', '42') # 设置 cookie
return response
# return 'Hello World!' + "\t" + name
elif name == "redir":
return redirect("http://baidu.com")#对该url进行重定向
elif name == "notfind":
print("not find")
abort(404)#注意,abort 会直接跳出调用它的函数,抛出异常,把控制权交给 Web 服务器
else:
return "None"

if __name__ == '__main__': app.run()#它告诉Flask以开发模式运行你的网站以便于测试
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python web服务