当前位置: 首页 > news >正文

快速上手FastAPI:构建和调用Python API的全方位指南

快速上手FastAPI:构建和调用Python API的全方位指南

在现代Web开发中,API(应用程序接口)已经成为了应用程序之间通信的关键组件。FastAPI 是一个现代、快速(高性能)的Web框架,用于构建基于Python 3.7+标准类型提示的API。本文将介绍FastAPI及其特点,并展示如何使用Python进行API调用。

FastAPI简介

FastAPI 是一个用于构建API的现代Web框架,具有以下特点:

  • 高性能:与NodeJS和Go相当,基于Starlette和Pydantic,使用Python的异步特性。
  • 易于使用:使用Python 3.7+类型提示,通过自动生成文档(Swagger UI和ReDoc)。
  • 快速开发:减少约40%的bug,并提高开发效率。
  • 易于维护:强类型提示和自动生成文档使代码更易于维护。
安装FastAPI和Uvicorn

首先,需要安装FastAPI和ASGI服务器Uvicorn:

pip install fastapi uvicorn
构建一个简单的API

构建一个简单的API非常容易。创建一个名为 main.py 的文件,并添加以下代码:

from fastapi import FastAPIapp = FastAPI()@app.get("/")
def read_root():return {"message": "Hello, World!"}@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):return {"item_id": item_id, "q": q}

运行API:

uvicorn main:app --reload

访问 http://127.0.0.1:8000 可以看到 {"message": "Hello, World!"},而 http://127.0.0.1:8000/items/1?q=foo 则会返回 {"item_id": 1, "q": "foo"}

自动生成的文档

FastAPI自动生成交互式API文档,访问 http://127.0.0.1:8000/docs 查看Swagger UI,访问 http://127.0.0.1:8000/redoc 查看ReDoc。

使用Python进行API调用

使用Python的 requests 库可以轻松地进行API调用。首先,安装 requests

pip install requests

然后,可以通过以下代码调用API:

import requests# 调用根路径
response = requests.get("http://127.0.0.1:8000/")
print(response.json())# 调用带参数的路径
response = requests.get("http://127.0.0.1:8000/items/1", params={"q": "foo"})
print(response.json())
复杂API示例

以下是一个更复杂的示例,包含请求体和响应模型:

from fastapi import FastAPI
from pydantic import BaseModelapp = FastAPI()class Item(BaseModel):name: strdescription: str = Noneprice: floattax: float = None@app.post("/items/")
def create_item(item: Item):return {"item": item}

在这个示例中,Item 模型使用Pydantic进行数据验证和解析,create_item 路径接收 Item 作为请求体,并返回相同的对象。

总结

FastAPI 是一个强大且现代的Python Web框架,适用于构建高性能API。其易于使用和自动生成文档的特性,使得开发和维护变得简单高效。通过本文的介绍,你应该能够快速上手FastAPI,并使用Python进行API调用。无论是简单的API还是复杂的应用,FastAPI都能满足你的需求。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【elementui】记录el-table设置左、右列固定时,加大滚动条宽度至使滚动条部分被固定列遮挡的解决方法
  • 解决R语言找不到系统库导致的报错
  • jenkins删除历史构建记录
  • CentOS 7.x 的 YUM 仓库问题
  • Poetry入门教程
  • Harmony学习(三)
  • Pandas筛选数据的10种方法
  • LVGL - RV1109 LVGL UI刷新效率优化-02
  • 洛谷 P1179 [NOIP2010 普及组] 数字统计 题解
  • Docker 相关命令
  • HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 单选题序号4
  • 【探索Linux】P.42(传输层 —— TCP面向字节流 | TCP粘包问题 | TCP异常情况 )
  • OpenWrt 为软件包和docker空间扩容
  • 【过滤器 vs 拦截器】SpringBoot中过滤器与拦截器:明智选择的艺术(如何在项目中做出明智选择)
  • html+css 实现水波纹按钮
  • co模块的前端实现
  • fetch 从初识到应用
  • Java多线程(4):使用线程池执行定时任务
  • Java-详解HashMap
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • nodejs实现webservice问题总结
  • React 快速上手 - 07 前端路由 react-router
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • 关于for循环的简单归纳
  • 配置 PM2 实现代码自动发布
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 数组的操作
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (阿里云万网)-域名注册购买实名流程
  • (论文阅读30/100)Convolutional Pose Machines
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (十)T检验-第一部分
  • (学习日记)2024.01.19
  • (转)winform之ListView
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .Net 基于.Net8开发的一个Asp.Net Core Webapi小型易用框架
  • .NET基础篇——反射的奥妙
  • /proc/vmstat 详解
  • :如何用SQL脚本保存存储过程返回的结果集
  • @Autowired @Resource @Qualifier的区别
  • @ohos.systemParameterEnhance系统参数接口调用:控制设备硬件(执行shell命令方式)
  • @RequestParam详解
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • [ 数据结构 - C++] AVL树原理及实现
  • [000-01-018].第3节:Linux环境下ElasticSearch环境搭建
  • [2024] 十大免费电脑数据恢复软件——轻松恢复电脑上已删除文件
  • [ActionScript][AS3]小小笔记
  • [Angular] 笔记 9:list/detail 页面以及@Output
  • [ARM]ldr 和 adr 伪指令的区别
  • [AS3]URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存