概述
此小节主要介绍一下fastapi入门和BaseModel的使用
fastapi框架介绍
- 待补充
环境
- python3.6+以上
- 装fastapi库
pip install fastapi[all]
- Pycharm创建工程环境
配好项目路径,虚拟环境目录和虚拟环境名
开始尝试编写fastapi
- 新建一个main.py文件
from fastapi import FastAPI
# 创建一个实例对象
app = FastAPI()
# fastapi简单介绍:
# 1.restful 接口设计规范中:面向资源(URI),
# 2.每一个资源都具有GET/PUT/POST/DELETE
# 3.每个资源动作都是无状态得(HTTP协议得短链接,即不保存客户端和服务端得连接通道)
# 4.(C或B/S客户端和服务端)交互得数据格式都使用json(content-type:application/json)
@app.get("/")
async def index():
# 业务处理
# 处理结果
return {'data':"hello fastapi"}
启动服务运行命令:uvicorn main:app --reload
访问:127.0.0.1:8000
查看效果
第一个简单的fastapi就写好了。
这里响应的是json数据
访问接口页面:http://127.0.0.1:8000/docs
点开接口的excute执行接口,可以看到我们执行后的调用接口的结果和调用的接口数据:请求头,请求地址,请求体,请求方法,响应结果,响应头,响应体以及响应中的数据等等
写一个模拟用户登录接口
- 简单模拟
@app.post('/login')
def user_login():
return {'msg':'用户已登录'}
这里写好了登录的返回已登录。但是登录接口必然是要传登录数据的。
要用到pydantic中的BaseModel
BaseModel可以定义请求体的详细内容,并在我们的登录接口中补充
# 基于BaseModel定义请求体的结构(JSON对象)
# 用手机+密码模式
class LoginUser(BaseModel):
phone: str
code: str
@app.post('/login')
def user_login(user: LoginUser):
# 查询phone 是否存在
# 验证code 是否有效
return {'msg':'用户已登录', 'phone':user.phone}
刷新后查看我们的页面
尝试此接口:
只传phone测试此接口,报422错误:
传两值进行测试:
已成功。
- 添加用户名+密码登录的接口
在main.py中继续添加以下代码
class UserNameAndPassword(BaseModel):
username: str # 必填项
password: str # 必填项
is_save: bool = False # 可选项
@app.post('/login2')
async def user_login_by_username(user:UserNameAndPassword):
return {'msg': f'用户登录失败,{user.username}用户不存在'}
刷新页面查看接口:
其中 - 我们的is_save
参数是可选参数,我们默认值为False
- tips:
is_save: "on" 这种是True
is_save: "off" 这种是False