您的位置:首页 > 其它

FastAPI学习-2(fastapi参数详解)

2020-06-28 05:24 501 查看

1.查看FastAPI源码

参数如下:

  • debug: 调试模式,True/False,此属性继承自starlette,在starlette中使用的是property装饰器
  • routes:路由列表,默认值为None,此属性继承自starlette,类型为startlette的BaseRoute列表,BaseRoute与starlette的基础类型Scope有关
  • title: API文档的标题,默认值FastAPI
  • description: API文档的描述,默认为空
  • version: API接口的版本号
  • openapi_url: OpenAPI文件路径,默认为/opanapi.json
  • openapi_prefix: OpenAPI文件路径前缀,默认为空
  • default_response_class: 默认响应类型,默认为JSONResponse,此参数继承自startlette的Response,有HTMLResponse、PlainTextResponse、UJSONResponse、RedirectResponse、StreamingResponse、FileResponse和JSONResponse七种,使用时需加载starlette.responses模块
  • docs_url: 交互式文档路径,默认为docs
  • redoc_url: 可选式文档路径,默认为redoc
  • swagger_ui_oauth2_redirect_url: OAuth重定向路径,默认为/docs/oauth2-redirect
  • swagger_ui_init_oauth: OAuth重定向字典,默认为None
  • middleware: 中间件,默认为空
  • exception_handlers: 异常处理方法,默认为None
  • on_startup: app启动时调用的方法列表
  • on_shutdown: app关闭时调用的方法列表
  • extra: 额外可选参数
    例子:
    debug: 这个参数不多做说明
    routes:路由列表,代码如下:
from fastapi import FastAPI
from starlette.responses import JSONResponse #此类型不可少
from starlette.routing import Route

# request参数不可少
async def homepage(request):
return JSONResponse({"index":"主页"}) #此类型格式化不可少

# request参数不可少
async def about(request):
return JSONResponse({"index":"关于"}) #此类型格式化不可少

routes = [
Route("/", endpoint=homepage,methods=["GET"]),
Route("/about", endpoint=about,methods=["POST"]),
]

app=FastAPI(routes=routes)

if __name__ == "__main__":
import os
command = "uvicorn demo12:app --host 127.0.0.1 --port 8888 --reload"
os.system(command)

接口文档配置

from fastapi import FastAPI

app=FastAPI( title="测试接口", description="测试接口描述", version="1.0.1",
openapi_url="/openapi/data_manger.json", docs_url="/openapi/doc",
redoc_url="/openapi/redoc")

@app.get('/')
async def login():
return {'index': '测试'}

if __name__ == "__main__":
import os
command = "uvicorn demo12:app --host 127.0.0.1 --port 8888 --reload"
os.system(command)
"""
生产环境中,因为接口不能对外显示,可以设置docs_url=None,redoc_url=None
app=FastAPI( title="测试接口", description="测试接口描述", version="1.0.1",
openapi_url="/openapi/data_manger.json", docs_url=None,
redoc_url=None)
"""
**middleware**
from fastapi import FastAPI
from starlette.middleware import Middleware
from starlette.middleware.cors import CORSMiddleware

middleware = [
Middleware(CORSMiddleware, allow_origins=['*'])
]

app=FastAPI(middleware=middleware)

@app.get('/')
async def login():
return {'index': '测试'}

if __name__ == "__main__":
import os
command = "uvicorn demo12:app --host 127.0.0.1 --port 8888 --reload"
os.system(command)

default_response_class

from fastapi import FastAPI
from starlette.responses import HTMLResponse

app=FastAPI(default_response_class=HTMLResponse)

@app.get("/")
def root():
return "<h1>标题</h1>"

if __name__ == "__main__":
import os
command = "uvicorn demo12:app --host 127.0.0.1 --port 8888 --reload"
os.system(command)


exception_handlers

from fastapi import FastAPI
from starlette.responses import HTMLResponse

async def not_found(request, exc):
return HTMLResponse(content="404页面", status_code=exc.status_code)

exception_handlers = {
404: not_found,
}

app = FastAPI(exception_handlers=exception_handlers)

if __name__ == "__main__":
import os
command = "uvicorn demo12:app --host 127.0.0.1 --port 8888 --reload"
os.system(command)


on_startup/on_shutdown使用

from fastapi import FastAPI

def startup():
print("服务已启动!")

def shutdown():
print("服务已关闭!")

app=FastAPI(on_startup=[startup],on_shutdown=[shutdown])

if __name__ == "__main__":
import os
command = "uvicorn demo12:app --host 127.0.0.1 --port 8888 --reload"
os.system(command)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: