美文网首页
python高效web API开发库FastAPI快速入门教程1

python高效web API开发库FastAPI快速入门教程1

作者: python测试开发 | 来源:发表于2021-07-15 22:54 被阅读0次

    创建API,即应用程序编程接口(API: application programming interface)。本教程介绍FastAPI的主要概念,以及如何使用它来快速创建Web APIs。

    到最后,你将能够开始创建生产就绪的Web API,而且你将有必要深入了解,为你的特定用例学习更多知识。

    本教程是由FastAPI的作者编写的。它包含了从官方文档中精心挑选的片段,避免了在技术细节上的迷失,同时帮助你尽可能快地进入状态。

    什么是FastAPI?

    FastAPI是现代的、高性能的网络框架,用于用Python构建基于标准类型提示的API。特点:

    • 运行速度快。基于Starlette和pydantic,提供了非常高的性能,与NodeJS和Go相当。
    • 快速编码。它可以显著提高开发速度。
    • 减少了错误的数量。它减少了人为造成错误的可能性。
    • 直观。它提供了很好的自动完成等编辑器支持,调试的时间更少。
    • 直接。它被设计成使用和学习都不复杂,所以你可以花更少的时间阅读文档。
    • 简洁:它最大限度地减少了代码的重复。
    • 稳健:它提供生产级代码和自动互动的文档。
    • 基于标准。它基于API的开放标准,OpenAPI和JSON Schema。

    安装FastAPI

    # pip install fastapi uvicorn
    

    FastAPI用来构建API,而Uvicorn是使用API来服务请求的服务器。

    快速入门

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

    执行

    $ uvicorn main:app --reload
    INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
    INFO:     Started reloader process [22487] using statreload
    INFO:     Started server process [22489]
    INFO:     Waiting for application startup.
    INFO:     Application startup complete.
    

    使用了--reload,当你更新你的应用程序代码时,服务器将自动重新加载。

    用浏览器打开http://127.0.0.1:8000,内容如下。

    {"message": "Hello World"}
    

    该JSON消息与你在应用程序中从函数中返回的字典相同。FastAPI负责将Python dict序列化为JSON对象,并设置适当的内容类型。

    在浏览器中打开http://127.0.0.1:8000/docs,你会看到由Swagger UI提供的自动交互式API文档。

    另一种自动生成的交互式API文档在:http://127.0.0.1:8000/redoc

    由于FastAPI是基于像OpenAPI这样的标准,有许多方法来显示API文档。FastAPI默认提供这两种方式。

    FastAPI是一个Python类,为你的API提供所有的功能。

    这里的app变量将是FastAPI类的实例。这将是创建你的API的主要交互点。

    常见的HTTP方法如下:


    @app.get("/")告诉FastAPI,下面的函数负责处理使用get操作去往路径/的请求。这是与路径操作有关的装饰器,或者说是路径操作装饰器。如果你想了解更多关于装饰器的信息,那么请看Python装饰器的入门手册

    其他操作有:


    也可以把它定义为一个普通的函数,而不是使用async def,改成def即可。

    如果你不知道普通函数和async函数的区别以及何时使用它们,请查看FastAPI文档中的并发和async/await。参考:Concurrency and async/await

    可以返回一个字典、列表,或者是字符串、整数等的单数值。你还可以返回pydantic模型。

    还有许多其他的对象和模型将被自动转换为JSON,包括对象关系映射器object-relational mappers (ORMs)和其他。

    相关文章

      网友评论

          本文标题:python高效web API开发库FastAPI快速入门教程1

          本文链接:https://www.haomeiwen.com/subject/pjompltx.html