1 flask 基础
1 模块安装
pip install flask
2 项目结构
3 服务端基础
- 实例化一个 web 服务对象
- 新建服务端函数
- 设置函数路由和返回值
- 编写服务 run 方法
from flask import Flask, render_template from flask import request import json # 实例化一个 web 服务对象 app = Flask(__name__) # 创建一个方法来处理请求,返回字符串 @app.route(methods=['GET'], rule='/') # 路由 def hello_str(): return '<h1>hello flask</h1>' # 创建一个方法来处理请求,返回 html # 服务的 xxx.py文件,和templates需要在同一级别 @app.route(methods=['GET'], rule='/index') # 路由 def hello_index(): return render_template('index.html') # 创建一个方法来处理请求,返回 json @app.route(methods=['GET'], rule='/data') # 路由 def hello_json(): data = { 'code': 1, 'data': [], 'msg': '请求成功!' } return json.dumps(data) # 构造一个 post 响应方法,返回字符串 @app.route(methods=['POST'], rule='/post') def post_fun(): # 处理请求参数 req_data = request.form username = req_data['username'] password = req_data['password'] data = { 'code': 1, 'data': [{"username":username, "password":password}], 'msg': '请求成功!' } return json.dumps(data) # 构造一个 post 响应方法, 响应 json 请求 @app.route(methods=['POST'], rule='/post/json') def post_json_fun(): # 处理请求参数 req_json_data = json.loads(request.get_data()) username = req_json_data['username'] password = req_json_data['password'] data = { 'code': 1, 'data': [{"username":username, "password":password}], 'msg': '请求成功!' } return json.dumps(data) if __name__ == '__main__': # 运行服务,并指定 ip 和 端口号。右键运行即可 app.run(host='127.0.0.1', port='9090')
4 客户端基础
- 发送不同的请求,得到不同的响应
import requests # 使用seesion登录,这样的好处是可以在接下来的访问中可以保留登录信息 session = requests.session() url = 'http://127.0.0.1:9090' # 发送 get 请求 result = session.get(url=url) print(result.text) print('--------------------') # 发送 get 请求 result = session.get(url=url+'/index') print(result.text) print('--------------------') # 发送 get 请求 result = session.get(url=url+'/data') print(result.json()) print('--------------------') # 发送 post 请求, body 为 form data = { 'username': 'lizi_form', 'password': '123456' } result = session.post(url=url + '/post', data=data) print(result.text) # 发送 post 请求, body 为 json data = { 'username': 'lizi_json', 'password': '123456' } result = session.post(url=url + '/post/json', json=data) print(result.text)
5 index.html demo
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> 用户名: <input type="text" name="username" /> 密码: <input type="text" name="password" /> 登录:<input type="submit" value="Submit" /> </body> </html>
6 运行server,运行test,查看结果
<h1>hello flask</h1> -------------------- <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> 用户名: <input type="text" name="username" /> 密码: <input type="text" name="password" /> 登录:<input type="submit" value="Submit" /> </body> </html> -------------------- {'code': 1, 'data': [], 'msg': '请求成功!'} -------------------- {'code': 1, 'data': [{'username': 'lizi_form', 'password': '123456'}], 'msg': '请求成功!'} -------------------- {'code': 1, 'data': [{'username': 'lizi_json', 'password': '123456'}], 'msg': '请求成功!'}