一、文件目录(忽略红色的错误信息,vscode敲的)
api是接口文件夹
app.py是接口汇总文件
methods文件夹里面的是接口文件
config文件夹是配置文件
main.py是启动文件
config.py
'''
配置文件
'''
SERVER_PORT = '8000'
main.py
from config.config import SERVER_PORT
import uvicorn
from api.app import app #只引入app.py
if __name__ == '__main__':
uvicorn.run(
app=app,
host="127.0.0.1",
port=SERVER_PORT,
reload=True,
debug=True)
app.py
from fastapi import FastAPI,Header
from typing import Optional
from pydantic import BaseModel
app = FastAPI()
# 此处这么引入,是需要在__init__.py配置的
from api.methods import *
# 否则如下引入
from api.methods.a import *
from api.methods.b import *
from api.methods.c import *
__init__.py
# 配置此行代码,from api.methods import * 会引入__all__里面的文件
__all__ = ['a','b','c']
a.py
# 将app.py的app等模块带过来
from api.app import app,Header,Optional,BaseModel
@app.get("/test/{name}")
async def test(name,Authorization: Optional[str] = Header(None)):
return {"name": name, "Authorization":Authorization}
@app.get("/hello/{name}")
async def hello(name):
return {"hello": name}
b.py
# 将app.py的app等模块带过来
from api.app import app,Header,Optional,BaseModel
@app.get("/detail")
async def detail(skip, limit):
return {
"skip": skip,
"limit":limit
}
c.py
# 将app.py的app等模块带过来
from api.app import app,Header,Optional,BaseModel
class data(BaseModel):
username: str
password: str
@app.post("/login")
async def hello(res:data):
if res.username == "mosowe" and res.password == "123456":
return {"hello": res.username}
else:
return {"sorry": "error"}