使用FastAPI搭建一个简单的API

最近在学如何使用FastAPI将自己的模型做成api的形式,记录一下自己遇到的问题和解决办法!

1、FastAPI设置上传文件为可选项

在调用api时,会传入一些参数,有些参数需要设置为可选项。

from fastapi import FastAPI, UploadFile, File, Form
from typing import Optional

# 创建 FastAPI 应用实例
app = FastAPI()

# 定义一个 API 端点,用于处理 POST 请求
# 该端点接收一个可选的文件和一个必需的文本字段
@app.post("/load_image_text")
def analyze_entity_relation(
    image: Optional[UploadFile] = None,  # 可选的上传文件参数,如果没有文件则为 None
    text: str = Form(...)  # 必需的表单字段,使用 Form 表示必须从表单中获取
):
    # 检查是否上传了文件
    if not image:
        # 如果没有上传文件,返回一个包含消息的 JSON 对象
        return {"data": "no image"}
    else:
        # 如果上传了文件,返回上传文件的文件名
        return {"filename": image.filename}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FastAPI一个Python编写的现代高性能Web框架,特别适合构建RESTful API和Web应用。它基于星lette和Uvicorn,提供了简单易用的API定义、自动文档生成以及类型安全等特性。以下是一些基本步骤来使用FastAPI搭建Web服务器: 1. 安装FastAPI: 首先确保你已经安装了Python和pip,然后在命令行中运行 `pip install fastapi uvicorn` 来安装FastAPI和其依赖的Uvicorn。 2. 创建项目文件结构: 创建一个新的目录,例如`my_api`,并在其中创建`main.py`和`app.py`(如果需要分模块管理)。 3. 编写`main.py` (或app.py): 这里通常导入并启动FastAPI应用程序。例如,一个简单的示例是: ```python from fastapi import FastAPI # 在这里导入你的API路由和配置 from app import app as api if __name__ == "__main__": import uvicorn uvicorn.run(api, host="0.0.0.0", port=8000) ``` 4. 定义路由和处理函数: 在`app.py`中,你需要定义`API Router`,即定义HTTP方法(GET、POST、PUT等)和URL路径,以及对应的处理函数。例如: ```python from fastapi import APIRouter, Depends, HTTPException, status router = APIRouter() @router.get("/items/") async def read_items(): # 这里是返回数据的逻辑,比如查询数据库 return [{"item_id": 1, "item_name": "Example item"}] ``` 5. 文档生成: FastAPI内置了`docs`功能,可以通过`app.include_router(router, tags=["Items"])`来添加文档,并访问`http://localhost:8000/docs`查看API文档。 6. 启动服务: 运行`main.py`(或指定的`app.py`),在指定的主机和端口上(如8000)启动Web服务器。 相关问题-- 1. FastAPI与星lette和Uvicorn的关系是什么? 2. 如何在FastAPI中处理POST请求并解析请求体数据? 3. 如何在FastAPI中设置全局响应头信息? 4. FastAPI中的Depends函数是用来做什么的?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值