flasgger界面:
个人信息页面(GET请求,qury携带参数)
对应的flasgger
查询界面:
对应的POST接口
ResultData:
type: array # 当类型为arrgy时,务必要带下一行的items以及$ref:......
items:
$ref: '#/definitions/SearchResult' # 同时,要在结尾处编写definitions那一串
definitions:
SearchResult:
type: object
properties:
name:
type: string
description: 用户名
age:
type: integer
description: 年龄
设计了三个路由,分别是:
主要是准备好相应的html页面和数据,我这里数据库用的mongodb(不重要,可自行选择)
注意:flask的默认路径如下
- /main.py
- /static
- /js
- /css
- /img
- /templates
- /*.html
templates/index.html:
DOCTYPE html>
<html lang="zh_CN">
<head>
<meta charset="UTF-8">
<title>标题title>
head>
<body>
<h1>查询h1>
<div>
<form method="post" action="search">
<input type="text" name="name" placeholder="Name" />
<input type="radio" name="sex" value=1>男input>
<input type="radio" name="sex" value=0>女input>
<input type="submit" value="Submit" />
form>
div>
body>
html>
templates/person.html:
DOCTYPE html>
<html lang="zh_CN">
<head>
<meta charset="UTF-8">
<title>标题title>
head>
<body>
<h1>查询h1>
<div>
<form method="post" action="search">
<input type="text" name="name" placeholder="Name" />
<input type="radio" name="sex",value=1>男input>
<input type="radio" name="sex",value=0>女input>
<input type="submit" value="Submit" />
form>
div>
body>
html>
import pymongo
connection = pymongo.MongoClient('127.0.0.1',27017)
db = connection['learn']
collection = db['student']
data = [{'name':'Smith', 'age':20,'sex':1},
{'name':'Mike', 'age':22,'sex':0},
{'name':'Jone', 'age':20,'sex':1},
{'name':'Aba', 'age':13,'sex':0}]
collection.insert_many(data)
flagger的嵌入,注意是在路由函数的注释里,或者直接修饰器引用(本文为前者)
直接按照示例里的格式编写即可
from flask import Flask,request,render_template,jsonify
import pymongo
from flasgger import Swagger
connect = pymongo.MongoClient('mongodb://localhost:27017')
db = connect['learn']
collection = db['student']
app = Flask(__name__, instance_relative_config=True)
swagger = Swagger(app, template={
"definitions": {},
"info": {
"description": "前后端连接",
"termsOfService": "/tos",
"title": "开发 API",
"version": "0.0.1"
},
"paths": {},
"swagger": "2.0"
})
@app.route('/',methods=['GET'])
def index():
return render_template('index.html')
@app.route('/person',methods=['GET'])
def person():
"""
查看个人界面
---
tags:
- 用户信息
parameters:
- name: name
in: query
description: 姓名
default: Smith
required: true
type: string
- name: id
in: query
description: 无用 测试
type: int
required: false
default: 1212
responses:
200:
description: 返回查询结构页面
"""
name = request.args.get('name')
data = collection.find_one({'name': name}, {'_id': 0})
return render_template('person.html',**data)
@app.route('/search',methods=['POST'])
def search():
"""
搜索个人信息,返回姓名、年龄
---
tags:
- 用户信息
parameters:
- name: name
description: 姓名
in: formData
type: string
required: true
default: Smith
- name: sex
description: 性别
in: formData
type: int
required: false
default: 1
responses:
200:
description: 返回查询结果
schema:
type: object
properties:
success:
type: boolean
code:
type: integer
data:
type: object
properties:
name:
type: string
age:
type: integer
default:
description: 操作异常,执行失败.返回信息描述错误详情
schema:
type: object
properties:
success:
type: boolean
default: false
code:
type: integer
msg:
type: string
"""
name = request.form.get('name')
sex = request.form.get('sex')
data = collection.find_one({'name':name,'sex':int(sex)},{'_id':0})
if data:
return jsonify({'code':200,'success':True,'data':{'age':data['age'],'name':name}})
else:
return jsonify({'code':400,'msg':f'无{name}相关数据'})
if __name__ == '__main__':
app.run(host='127.0.0.1', port=5000, debug=True)