【python】多文件开发接口文件之间相互调用

一、文件目录(忽略红色的错误信息,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"} 

版权声明:本文为skyblacktoday原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。