壹影博客.
我在下午4点钟开始想你
FastApi基本使用教程
  • 2024-3-6日
  • 0评论
  • 228围观

FastApi基本使用教程

介绍:FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建基于 Python 的 API。它是一个开源项目,基于 Starlette 和 Pydantic 库构建而成,提供了强大的功能和高效的性能。

FastAPI 的主要特点包括:

快速高效:FastAPI 基于异步编程模型(使用 Python 3.7+ 的 async 和 await 关键字),利用了 Python 的异步生态系统,提供出色的性能和吞吐量。
自动文档生成:FastAPI 可以自动为你的 API 生成交互式文档,支持自动检测请求参数和响应模型,并生成相应的 API 文档。
数据验证和转换:FastAPI 使用 Pydantic 库,提供了强大的数据验证和转换功能,能够自动处理请求和响应数据的验证、转换和序列化。
类型提示:FastAPI 基于 Python 的类型提示机制,提供了强类型的请求和响应处理,这样可以减少很多常见的错误,并提供更好的代码提示和可读性。
安全认证:FastAPI 支持常用的认证方式,如 OAuth2、JWT 等,并提供了对 HTTPS 的支持,可以保护你的 API 通信安全。
强大的生态系统:FastAPI 可以与众多 Python 生态系统中的工具和库无缝集成,如 SQLAlchemy、Databases、Redis 等。

官网:https://fastapi.tiangolo.com/zh/

API查询:点我跳转

快速使用

一、下载安装依赖

pip install fastapi

pip install pydantic

pip install uvicorn

 

简单使用Demo

from typing import Optional, Any
from pydantic import BaseModel
from fastapi import FastAPI, Body

from utils.CnOcrUtils import handle

# 创建服务对象
app = FastAPI(
    title="OCR-API",  # 设置Swagger UI的标题
    description="图片文字识别接口.",  # 设置Swagger UI的描述
    version="0.1.0"  # 设置API的版本(可选)
)

# get请求
@app.get("/")
async def hello():
    return {"message": "Hello World"}

# 创建一个类(可以用于接收对象以及返回对象模型)
class Publication(BaseModel):
    path: str
    body:str

# post请求 指定url为/ocr
# response_model=Publication 指定返回模型必须为对象的参数 缺一不可否则会抛出异常
# description 描述
@app.post("/ocr",response_model=Publication,tags=["ocr"],description="这是图片文字识别")
def ocr(pc: Publication = Body(..., example={"path": "C:\\Users\\76110\\Desktop\\01.png"})):
    str = handle(pc.path) # 自己写的方法

    # 返回path 和 body 因为指定了返回模型
    return {"path": pc.path,"body":"转换成功"+"\n"+str}

# example 为 Swagger上面的接口与实例写法


# 启动
if __name__ == '__main__':
    import uvicorn
    uvicorn.run(app="main:app", host="127.0.0.1", port=8000, reload=True)

相关报错内容

python报错:ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+

处理方案:这个错误是因为你的 Python 环境使用的是 OpenSSL 1.1.0h,而 urllib3 v2.0 需要使用 OpenSSL 1.1.1。有两种解决方法:\n\n升级 OpenSSL 到 1.1.1 或更高版本。\n降级 urllib3 到 v1.x 版本,可以通过命令 pip install urllib3==1.* 来实现。

发表评论

渝ICP备19011465号 | 渝ICP备19011465号-1