zoukankan      html  css  js  c++  java
  • FastAPI(2)- 快速入门

    安装 FastAPI

    pip install fastapi
    
    # 将来需要将应用程序部署到生产环境可以安装 uvicorn 作为服务器
    pip install uvicorn

    最简单的代码栗子

    from fastapi import FastAPI
    
    app = FastAPI()
    
    
    @app.get("/")
    async def root():
        return {"message": "Hello World"}

    运行 uvicorn 命令,启动服务器

    进到 py 文件所属目录的命令行

    uvicorn main:app --reload  
    • main:main.py 文件(一个 Python「模块」)
    • app:在 main.py 文件中通过 app = FastAPI() 创建的对象
    • --reload:让服务器在更新代码后自动重新启动,仅在开发时使用该选项

     

    我这里截图的名字换了哈

    浏览器访问

    http://127.0.0.1:8000 

    查看交互式 API 文档

    http://127.0.0.1:8000/docs

    查看可选的 API 文档

    http://127.0.0.1:8000/redoc 

      

    OpenAPI

    FastAPi 使用 API 的 OpenAPI 标准为所有 API 生成 schema

    schema

    • 是对事物的一种定义或描述
    • 它并非具体的实现代码,而只是抽象的描述
    • 后面会详说

    API Schema

    • OpenAPI 是一种规定如何定义 API Schema 的规范
    • 定义的 OpenAPI Schema 将包括 API 路径,以及它们可能使用的参数等等
    • 比如:这个 API 的作用是什么,需要必传哪些参数,请求方法是什么

    Data Schema

    • 指的是某些数据比如 JSON 的结构
    • 它可以表示 JSON 的属性及其具有的数据类型
    • 比如:某个属性的数据类型是什么,有没有默认值,是不是必填,作用是什么

    JSON Schema

    • OpenAPI 会为 API 定义 API Schema,一般会包括 API 发送和接收的数据的定义,比如:发送的数据的类型、是否必填
    • 这些定义会以 JSON数据格式展示出来,所以都会称为 JSON Schema

    查看 openapi.json

    原始的 OpenAPI Schema,其实它只是一个自动生成的包含了所有 API 描述的 JSON 数据结构

    http://127.0.0.1:8000/openapi.json 

    拆分代码详解

    from fastapi import FastAPI
    
    app = FastAPI()
    
    
    @app.get("/")
    async def root():
        return {"message": "Hello World"}

    将上面最简单的栗子代码进行拆开详解

    第一步:导入 FastAPI

    from fastapi import FastAPI
    • FastAPI 是一个为 API 提供了所有功能的 Python ,必写就对了
    • FastAPI 是直接从 Starlette 继承的类,可以通过 FastAPI 使用所有的 Starlette 的功能

    第二步:创建一个 FastAPI 实例

    app = FastAPI()
    • app 就是 FastAPI 类的一个实例对象
    • 重点:app 将是创建所有 API 的主要交互对象
    • 要点:uvicorn 执行命令时也会用到 app
    uvicorn main:app --reload

    app 变量名换一下呢?

    from fastapi import FastAPI
    
    
    my_awesome_api = FastAPI()
    
    
    @my_awesome_api.get("/")
    async def root():
        return {"message": "Hello World"}

    那么用 uvicorn 运行命令时也需要换

    uvicorn main:my_awesome_api --reload

    第三步:创建一个路径操作

    路径

    • 指的是 URL 中从第一个 / 起的后半部分,即常说的 path
    • 比如:https://example.com/items/foo 的路径就是/items/foo
    • 路径也称为:端点、路由

    操作

    就是 HTTP 请求方法

    • POST

    • GET

    • PUT

    • DELETE

    • OPTIONS

    • HEAD

    • PATCH

    • TRACE

    在 HTTP 协议中,可以使用以上的其中一种(或多种)「方法」与每个路径进行通信

    遵守 RESTFul 风格的话

    通常使用: 

    • POST:创建数据
    • GET:读取数据
    • PUT:更新数据
    • DELETE:删除数据

    定义一个路径操作装饰器

    @app.get("/")

    有两点含义

    • 请求路径为 /
    • 使用 get 请求

    其他请求方法的装饰器

    • @app.post()
    • @app.put()
    • @app.delete()
    • @app.options()
    • @app.head()
    • @app.patch()
    • @app.trace()

    第四步:定义路径操作函数

    async def root():
    • 这就是一个普通的 Python 函数
    • 每当 FastAPI 接收一个使用 GET 方法访问路径为  / 的请求时这个函数会被调用
    • 在这个例子中,它是一个 async 函数(异步处理函数,后面会细说)
    # 也可以不加 async,就是个常规函数
    def root():

    第五步:函数返回内容

    return {"message": "Hello World"}
    • 可以返回一个 dict、list,也可以是 str、int 单个值
    • 还可以返回 Pydantic 模型(后面详解)
    • 还可以是其他会自动转换为 JSON 的对象和模型(包括 ORM 对象等)

     

    FastAPI 入门总结

    编写一个最简单的 FastAPI 应用程序五部曲

    1. 导入 FastAPI
    2. 创建一个 app 实例
    3. 编写一个路径操作装饰器,如 @app.get("/") 
    4. 编写一个路径操作函数,如  def root(): ... 
    5. 运行开发服务器,如  uvicorn main:app --reload 

     

  • 相关阅读:
    8月18号心得
    题解
    考试题
    1055心得
    1055解
    1055题
    心得
    考试三道题
    2017.8.1 居然是倒数第二天了……
    1055
  • 原文地址:https://www.cnblogs.com/poloyy/p/15265095.html
Copyright © 2011-2022 走看看