优秀的编程知识分享平台

网站首页 > 技术文章 正文

FastApi——高效的用于构建API的高性能Python框架

nanyue 2024-12-22 20:00:17 技术文章 6 ℃

介绍

FastApi是一个Python平台下的API框架,其具备高性能、简单易学、高效率的特点,可以快速用于生产环境,据了解,其性能可媲美nodejs和go!






Github

FastAPI在Github上正在越来越被受欢迎,单日收获stars数达上百,目前总数截止发文已经超过16.6k

https://github.com/tiangolo/fastapi

特性

FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。

  • 快速:可与 NodeJSGo 比肩的极高性能(归功于 Starlette 和 Pydantic)。最快的 Python web 框架之一。
  • 高效编码:提高功能开发速度约 200% 至 300%。*
  • 更少 bug:减少约 40% 的人为(开发者)导致错误。*
  • 智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。
  • 简单:设计的易于使用和学习,阅读文档的时间更短。
  • 简短:使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。
  • 健壮:生产可用级别的代码。还有自动生成的交互式文档。
  • 标准化:基于(并完全兼容)API 的相关开放标准:OpenAPI (以前被称为 Swagger) 和 JSON Schema。
  • * 根据对某个构建线上应用的内部开发团队所进行的测试估算得出。

    依赖

    Python 3.6 及更高版本,FastAPI 站在以下巨人的肩膀之上:

    • Starlette 负责 web 部分。
    • Pydantic 负责数据部分。

    安装

    pip install fastapi



    还会需要一个 ASGI 服务器,生产环境可以使用 Uvicorn 或者 Hypercorn。

    pip install uvicorn



    示例

    • 创建一个 main.py 文件并写入以下内容:
    from typing import Optional
    
    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: Optional[str] = None):
        return {"item_id": item_id, "q": q}

    运行

    通过以下命令运行服务器:

    uvicorn main:app --reload






    使用浏览器访问 http://127.0.0.1:8000/items/5?q=somequery

    {"item_id": 5, "q": "somequery"}

    已经创建了一个具有以下功能的 API:

    • 通过 路径 / 和 /items/{item_id} 接受 HTTP 请求。
    • 以上 路径 都接受 GET 操作(也被称为 HTTP 方法)。
    • /items/{item_id} 路径 有一个 路径参数 item_id 并且应该为 int 类型。
    • /items/{item_id} 路径 有一个可选的 str 类型的 查询参数 q

    交互式文档

    现在访问 http://127.0.0.1:8000/docs。

    会看到自动生成的交互式 API 文档(由 Swagger UI生成):


    还有一个可选的Redoc文档


    性能

    独立机构 TechEmpower 所作的基准测试结果显示,基于 Uvicorn 运行的 FastAPI 程序是 最快的 Python web 框架之一,仅次于 Starlette 和 Uvicorn 本身(FastAPI 内部使用了它们)

    总结

    从目前的发展来看,FastAPI是一个非常值得使用的框架,其性能和开发效率都非常的高,感兴趣的小伙伴可以研究一下!

    Tags:

    最近发表
    标签列表