您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

高性能API接口构建框架:fastapi

时间:2022-05-09 11:26:19  来源:  作者:司马弈

一、fastapi简介:

FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用基于类型提示的 Python/ target=_blank class=infotextkey>Python 3.6 及更高版本。

 

二、关键特性:

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

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

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

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

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

简短:减少代码重复。通过不同的参数声明实现丰富功能。bug 更少。

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

标准化:基于 API 的相关开放标准并完全兼容:OpenAPI (以前被称为 Swagger) 和 JSON Schema。

 

官方文档:
https://fastapi.tiangolo.com

源码地址:
https://Github.com/tiangolo/fastapi

 

三、安装

1.fastapi安装

假设你已经安装pip,那么可以直接使用pip命令进行安装:

pip install fastapi

 

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

 

2.开发服务器安装

pip install uvicorn

高性能API接口构建框架:fastapi

 

四、示例

1.创建

创建一个 mAIn.py 文件并写入以下内容:

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: str = None):
return {"item_id": item_id, "q": q}

高性能API接口构建框架:fastapi

 

或者使用 async def

高性能API接口构建框架:fastapi

 

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def read_root():
return {"Hello": "World"}

@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}

 

2.运行

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

uvicorn main:app --reload

高性能API接口构建框架:fastapi

 

关于 uvicorn main:app --reload 命令

uvicorn main:app 命令含义如下:

main:main.py 文件(一个 Python "模块")。

app:在 main.py 文件中通过 app = FastAPI() 创建的对象。

--reload:让服务器在更新代码后重新启动。仅在开发时使用该选项。

运行服务器成功会出现以下信息:

INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)INFO: Started reloader process [28720]INFO: Started server process [28722]INFO: Waiting for application startup.INFO: Application startup complete.

检查

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

你将会看到如下 JSON 响应:

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

高性能API接口构建框架:fastapi

 

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

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

 

五、api文档使用

1.交互式文档:

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

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

高性能API接口构建框架:fastapi

 

2.备选 API 文档

访问
http://127.0.0.1:8000/redoc。

你会看到另一个自动生成的文档(由 ReDoc)生成:

高性能API接口构建框架:fastapi

 



Tags:fastapi   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
FastAPI:高性能Web框架的简介与应用
正文:在当今互联网时代,构建高性能的WebAPI是许多开发人员的关注重点。而FastAPI作为一个现代、快速的Web框架,为基于标准Python类型提示的API构建提供了强大的支持。FastAPI的...【详细内容】
2023-12-27  Search: fastapi  点击:(104)  评论:(0)  加入收藏
使用FastAPI部署YOLO模型的步骤
在计算机视觉领域,You Only Look Once (YOLO) 算法已经崭露头角,成为一种改变游戏规则的算法。它承诺具有卓越准确性的实时目标检测,使其成为从监视和自动驾驶车辆到图像和视频...【详细内容】
2023-12-06  Search: fastapi  点击:(163)  评论:(0)  加入收藏
高性能Python开发:解密FastAPI的高并发秘籍!
在FastAPI中解决高并发可以采取以下几种方法:异步处理(Asynchronous Processing):FastAPI内置了对异步处理的支持,可以使用async和await关键字定义异步函数。通过使用异步函数,可...【详细内容】
2023-11-06  Search: fastapi  点击:(229)  评论:(0)  加入收藏
Python Web框架的三强之争:Flask、Django和FastAPI
出品 | OSC开源社区(ID:oschina2013)JetBrains 公布 2022 Python 开发者调查结果。完整报告地址:https://lp.jetbrains.com/zh-cn/python-developers-survey-2022/这是由 Pytho...【详细内容】
2023-10-11  Search: fastapi  点击:(337)  评论:(0)  加入收藏
fastapi python 中的异步 io 高性能 web 框架
fastapiFastAPI 是一个基于 Python 的现代、快速(高性能)的 Web 框架,用于构建 API。它具有简单易用的语法和高度集成的特性,旨在提供高效的开发体验和出色的性能。‬项目特性 ...【详细内容】
2023-08-13  Search: fastapi  点击:(262)  评论:(0)  加入收藏
高性能API接口构建框架:fastapi
一、fastapi简介:FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用基于类型提示的 Python 3.6 及更高版本。 二、关键特性:快速:可与 NodeJS 和 Go 比肩的极高...【详细内容】
2022-05-09  Search: fastapi  点击:(1222)  评论:(0)  加入收藏
使用 FastAPI 和 Angular 部署机器学习模型
在本文中,我们将探讨如何为生产准备机器学习模型,并将其部署在简单的 Web 应用程序中。部署机器学习模型本身就是一门艺术。事实上,将机器学习模型成功投入生产超出了数据科学...【详细内容】
2022-03-25  Search: fastapi  点击:(592)  评论:(0)  加入收藏
FastAPI - 一款新型的 Python Web 框架(对比 Flask)
近日只是为了想尽办法为 Flask 实现 Swagger UI 文档功能,基本上要让 Flask 配合 Flasgger, 所以写了篇 Flask 应用集成 Swagger UI 。然而不断的 Google 过程中偶然间发现了...【详细内容】
2021-12-23  Search: fastapi  点击:(1121)  评论:(0)  加入收藏
FastAPI 大型项目模板框架
FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。关键特性: 快速:可与 NodeJS 和 Go 比肩的极高性能(归功于 Star...【详细内容】
2021-05-10  Search: fastapi  点击:(1419)  评论:(0)  加入收藏
FastAPI入门
之前一直用Flask,今年看到这个FastAPI框架,感觉还不错,体验了下,很容易就入门。开始学习FastAPI特点官方描述从官方的描述来看,有以下特点: 高性能,与NodeJS和Go相当,最快的python...【详细内容】
2020-10-12  Search: fastapi  点击:(859)  评论:(0)  加入收藏
▌简易百科推荐
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  步步运维步步坑    Tags:架构   点击:(7)  评论:(0)  加入收藏
大模型应用的 10 种架构模式
作者 | 曹洪伟在塑造新领域的过程中,我们往往依赖于一些经过实践验证的策略、方法和模式。这种观念对于软件工程领域的专业人士来说,已经司空见惯,设计模式已成为程序员们的重...【详细内容】
2024-03-27    InfoQ  Tags:架构模式   点击:(18)  评论:(0)  加入收藏
哈啰云原生架构落地实践
一、弹性伸缩技术实践1.全网容器化后一线研发的使用问题全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择...【详细内容】
2024-03-27  哈啰技术  微信公众号  Tags:架构   点击:(13)  评论:(0)  加入收藏
DDD 与 CQRS 才是黄金组合
在日常工作中,你是否也遇到过下面几种情况: 使用一个已有接口进行业务开发,上线后出现严重的性能问题,被老板当众质疑:“你为什么不使用缓存接口,这个接口全部走数据库,这怎么能扛...【详细内容】
2024-03-27  dbaplus社群    Tags:DDD   点击:(15)  评论:(0)  加入收藏
高并发架构设计(三大利器:缓存、限流和降级)
软件系统有三个追求:高性能、高并发、高可用,俗称三高。本篇讨论高并发,从高并发是什么到高并发应对的策略、缓存、限流、降级等。引言1.高并发背景互联网行业迅速发展,用户量剧...【详细内容】
2024-03-13    阿里云开发者  Tags:高并发   点击:(10)  评论:(0)  加入收藏
如何判断架构设计的优劣?
架构设计的基本准则是非常重要的,它们指导着我们如何构建可靠、可维护、可测试的系统。下面是这些准则的转换表达方式:简单即美(KISS):KISS原则的核心思想是保持简单。在设计系统...【详细内容】
2024-02-20  二进制跳动  微信公众号  Tags:架构设计   点击:(40)  评论:(0)  加入收藏
详解基于SpringBoot的WebSocket应用开发
在现代Web应用中,实时交互和数据推送的需求日益增长。WebSocket协议作为一种全双工通信协议,允许服务端与客户端之间建立持久性的连接,实现实时、双向的数据传输,极大地提升了用...【详细内容】
2024-01-30  ijunfu  今日头条  Tags:SpringBoot   点击:(23)  评论:(0)  加入收藏
PHP+Go 开发仿简书,实战高并发高可用微服务架构
来百度APP畅享高清图片//下栽のke:chaoxingit.com/2105/PHP和Go语言结合,可以开发出高效且稳定的仿简书应用。在实现高并发和高可用微服务架构时,我们可以采用一些关键技术。首...【详细内容】
2024-01-14  547蓝色星球    Tags:架构   点击:(124)  评论:(0)  加入收藏
GraalVM与Spring Boot 3.0:加速应用性能的完美融合
在2023年,SpringBoot3.0的发布标志着Spring框架对GraalVM的全面支持,这一支持是对Spring技术栈的重要补充。GraalVM是一个高性能的多语言虚拟机,它提供了Ahead-of-Time(AOT)编...【详细内容】
2024-01-11    王建立  Tags:Spring Boot   点击:(133)  评论:(0)  加入收藏
Spring Boot虚拟线程的性能还不如Webflux?
早上看到一篇关于Spring Boot虚拟线程和Webflux性能对比的文章,觉得还不错。内容较长,抓重点给大家介绍一下这篇文章的核心内容,方便大家快速阅读。测试场景作者采用了一个尽可...【详细内容】
2024-01-10  互联网架构小马哥    Tags:Spring Boot   点击:(131)  评论:(0)  加入收藏
站内最新
站内热门
站内头条