1、fastapi

https://fastapi.tiangolo.com/

 

demo
from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}
uvicorn main:app --reload

 

127.0.0.1:8000/docs
127.0.0.1:8000/redoc
http://127.0.0.1:8000/openapi.json

 



 

请求参数验证
每个参数都必填
from enum import Enum
from typing import List, Dict, Set, Tuple, Optional
from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()


class Item(BaseModel):
    # 有等于号的是可选参数
    name: str
    price: List[Dict[str, float]]
    is_offer: bool = None
    # a: Tuple[int, int, bool]
    # se: Set[bytes] = {b"123"}


class ModelName(str, Enum):
    alexnet = "alexnet"
    resnet = "resnet"
    lenet = "lenet"


@app.get("/")
async def read_root():
    return {"Hello": "World"}


@app.get("/items/{name:str}")
async def read_item(name: ModelName, q: str = None):  # 请求参数如果不指定默认值,则必须输入

    if name == ModelName.alexnet:
        return {"name": name, "message": "Deep Learning FTW!", 'q': q}
    if name.value == "lenet":
        return {"name": name, "message": "LeCNN all the images", 'q': q}
    return {"name": name, "message": "Have some residuals", 'q': q}


@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Item):
    print(item)
    return {"item_name": item.name, "item_id": item_id}


fake_items_db = [{"item_name": "Foo"}, {"item_name": "Bar"}, {"item_name": "Baz"}]


@app.get("/items2/")
async def read_item(skip: int = 0, limit: Optional[int] = None):  # limit
    if limit is None:
        return fake_items_db[skip: skip + 1]  # 这是切片    ,返回数组
    else:
        return fake_items_db[skip: skip + limit]
# uvicorn main:app --reload

 

posted @ 2020-05-22 13:57  慕沁  阅读(297)  评论(0)    收藏  举报