• FastAPI,一款实用的web框架


    Java出身的程序员也许知道利用Spring Mvc框架开发一个web应用多麻烦,当然Python也提供一些轻量级的web框架,如Django、Flask。我曾经就使用过Flask开发过mock平台和小工具平台,但是Python栈的web框架缺点就是并发性相对比较差,如果请求量级上来了,服务性能就会差一些,适合做一些对性能要求不是太高的“玩意”。

    当然今天的主角不是上述提到的,而是FastApi,一个用于构建 API 的现代、快速(高性能)的web框架。下面就给大家做一个入门ABC,讲解一下其特点以及如何使用。

    特点

    • 快速:可与 NodeJS 和 Go 比肩的极高性能(归功于 Starlette 和 Pydantic)。最快的 Python web 框架之一。

    • 高效编码:提高功能开发速度约 200% 至 300%。

    • 更少bug:减少约 40% 的人为(开发者)导致错误。

    • 智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。

    • 简单:设计的易于使用和学习,阅读文档的时间更短。

    • 简短:使代码重复最小化。通过不同的参数声明实现丰富功能。

    • 健壮:生产可用级别的代码。还有自动生成的交互式文档。

    话不多说,先上个小菜开开胃。

    pip install fastapi安装uvicorn来作为服务器:pip install uvicorn[standard]

    第一行代码

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

    INFO:Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

    该行显示了你的应用在本机所提供服务的 URL 地址。

    交互式 API 文档

    跳转到 http://127.0.0.1:8000/docs。你将会看到自动生成的交互式 API 文档。

    开发步骤

    步骤 1:导入 FastAPI

    from fastapi import FastAPI
    
    app = FastAPI()
    

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

    技术细节

    FastAPI 是直接从 Starlette 继承的类。

    你可以通过 FastAPI 使用所有的 Starlette 的功能。

    步骤 2:创建一个 FastAPI「实例」

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

    这里的变量 app 会是 FastAPI 类的一个「实例」。

    这个实例将是创建你所有 API 的主要交互对象。

    这个 app 同样在如下命令中被 uvicorn 所引用:

    如果你像下面这样创建应用:

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

    将代码放入 main.py 文件中,然后你可以像下面这样运行 uvicorn:

    步骤 3:创建一个路径操作

    路径

    这里的「路径」指的是 URL 中从第一个 / 起的后半部分。

    所以,在一个这样的 URL 中:

    https://example.com/items/foo

    ...路径是:/items/foo

    「路径」也通常被称为「端点」或「路由」。

    开发 API 时,「路径」是用来分离「关注点」和「资源」的主要手段。

    操作

    这里的「操作」指的是一种 HTTP「方法」。

    下列之一:

    • POST

    • GET

    • PUT

    • DELETE

    ...以及更少见的几种:

    • OPTIONS

    • HEAD

    • PATCH

    • TRACE

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

    在开发 API 时,你通常使用特定的 HTTP 方法去执行特定的行为。

    通常使用:

    • POST:创建数据。

    • GET:读取数据。

    • PUT:更新数据。

    • DELETE:删除数据。

    因此,在 OpenAPI 中,每一个 HTTP 方法都被称为「操作」。

    我们也打算称呼它们为「操作」。

    定义一个路径操作装饰器

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

    @app.get("/") 告诉 FastAPI 在它下方的函数负责处理如下访问请求:

    • 请求路径为 /

    • 使用 get 操作

    你也可以使用其他的操作:

    • @app.post()

    • @app.put()

    • @app.delete()

    以及更少见的:

    • @app.options()

    • @app.head()

    • @app.patch()

    • @app.trace()

    步骤 4:定义路径操作函数

    这是我们的「路径操作函数」:

    • 路径:是 /。

    • 操作:是 get。

    • 函数:是位于「装饰器」下方的函数(位于 @app.get("/") 下方)。

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

    这是一个 Python 函数。

    每当 FastAPI 接收一个使用 GET 方法访问 URL「/」的请求时这个函数会被调用。

    在这个例子中,它是一个 async 函数。

    你也可以将其定义为常规函数而不使用 async def:

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

    步骤 5:返回内容

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

    你可以返回一个 dict、list,也可以像 str、int 一样的单个值,等等。

    好文推荐

    往期推荐

    接口间参数传递的一种解决方案

    经验分享|测试工程师转型测试开发历程

    技术面必考:多线程、多进程

    接口测试框架开发实践2:接口自动化测试框架设计思路

    接口自动化测试框架实践1:接口测试概述

    我在阿里做测开

  • 相关阅读:
    java的(PO,VO,TO,BO,DAO,POJO)解释
    java中的几种对象(PO,VO,DAO,BO,POJO)
    mybatis如何根据mapper接口生成其实现类
    MyBatis接口的简单实现原理
    Fast-settling synchronous-PWM-DAC filter has almost no ripple
    CMOS DACs act as digitally controlled voltage dividers
    Programmable current source requires no power supply
    Add margining capability to a dc/dc converter
    Use an LM317 as 0 to 3V adjustable regulator
    Simple microcontroller-temperature measurement uses only a diode and a capacitor
  • 原文地址:https://www.cnblogs.com/iloverain/p/16515119.html
Copyright © 2020-2023  润新知