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

FastAPI简介与快速体验

文章目录

  • 一、FastAPI简介
  • 二、FastAPI的特点
  • 三、安装
    • 3.1 安装 fastapi
    • 3.2 安装 ASGI 服务器
  • 四、FastAPI快速体验
    • 4.1 编写main.py文件
    • 4.2 运行服务
    • 4.3 观察服务运行结果

一、FastAPI简介

FastAPI是一个用于构建API的快速、高性能的WEB框架,使用Python3.6+并基于标准的Python类型提示。

二、FastAPI的特点

  • 快速:可与NodeJS和GO比肩的极高性能,是执行速度最快的Python的web框架之一
  • 高效编码:代码开发效率可提高至200%至300%
  • 更少的Bug:可减少大约40%的开发者人为导致的Bug
  • 智能:编辑器中自动补全和提示支持的非常好,可以大幅减少调试时间
  • 简单:学习和使用起来非常的简单
  • 健壮:代码具有很好的健壮性,而且还能自动生成帮助文档
  • 标准化:完全兼容API的相关标准,自动支持Swagger接口文档

三、安装

3.1 安装 fastapi

pip install fastapi

3.2 安装 ASGI 服务器

pip install "uvicorn[standard]"

四、FastAPI快速体验

4.1 编写main.py文件

编写如下代码,即实例化了一个app的对象,然后编写了两个接口,其中helloworld接口无需填写参数,直接返回一个字典,而get_info接口需要在url中填写一个参数,同样也是返回一个字典

from fastapi import FastAPI

app=FastAPI()

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

@app.get("/user/{name}")
def get_info(name: str):
    return {"name":name}

4.2 运行服务

可以直接使用如下命令执行

PS G:\redrose2100.com\fast_api_demo> uvicorn main:app --reload
INFO:     Will watch for changes in these directories: ['G:\\redrose2100.com\\fast_api_demo']                                                                                    
ERROR:    [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。                                                                                                  
PS G:\redrose2100.com\fast_api_demo>

显然这里报错了,报这个错误的原因是FastAPI默认的是使用8000端口,而当前本机已经占用8000端口了,因此可以通过–port参数修改端口,即再执行如下命令,即将端口修改为8080端口,可以看出此时已经运行起来了。

PS G:\redrose2100.com\fast_api_demo> uvicorn main:app --reload --port 8080
INFO:     Will watch for changes in these directories: ['G:\\redrose2100.com\\fast_api_demo']
INFO:     Uvicorn running on http://127.0.0.1:8080 (Press CTRL+C to quit)
INFO:     Started reloader process [14840] using WatchFiles                                                                                            
INFO:     Started server process [3664]
INFO:     Waiting for application startup.
INFO:     Application startup complete.                                                                                                                                          
WARNING:  WatchFiles detected changes in 'main.py'. Reloading...
INFO:     Started server process [18188]
INFO:     Waiting for application startup.
INFO:     Application startup complete. 

4.3 观察服务运行结果

直接使用浏览器打开 127.0.0.1:8080,则此时相当于调用了helloworld接口了,即直接返回一个字典了,如下:

打开 127.0.0.1:8080/docs 则可以打开FastAPI自带的swagger接口文档了,如下

可以将第一个接口展开,点击执行,如下,可以看到已经得到了返回值

把第二个接口展开,可以看到此时这里有一个必填参数,然后点击执行,即也得到了结果

至此就快速体验了一下FastAPI最简单的应用,使用起来非常的简单便捷

相关文章:

  • 《微信小程序案例9》小程序登录流程
  • 【Python初级人工智能精讲】用Paddlehub给一段没有标点符号的文字加上合适的标点符号
  • idea使用fiddler抓包分析,fiddler抓取https
  • (附源码)python旅游推荐系统 毕业设计 250623
  • 泛型 和 IO流 和 网络编程
  • js 复制内容到剪切板
  • redis中的锁,通过UUID防止误删
  • 生命在于折腾——浅谈羊了个羊
  • 微雪树莓派PICO笔记——6. I2C(集成电路总线)
  • 容斥原理
  • RealityCapture摄影测量软件
  • TransBigData:一款基于 Python 的超酷炫交通时空大数据工具包
  • 矩阵理论复习部分——线性代数(1)行列式
  • 3 MyBatis 级联操作
  • Vue项目的部署(服务器)
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • AngularJS指令开发(1)——参数详解
  • canvas 高仿 Apple Watch 表盘
  • HTML-表单
  • JavaWeb(学习笔记二)
  • MobX
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • OSS Web直传 (文件图片)
  • PaddlePaddle-GitHub的正确打开姿势
  • Python中eval与exec的使用及区别
  • Redis中的lru算法实现
  • SQLServer插入数据
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • (10)ATF MMU转换表
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (笔试题)分解质因式
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (十一)手动添加用户和文件的特殊权限
  • (万字长文)Spring的核心知识尽揽其中
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (译) 函数式 JS #1:简介
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)EXC_BREAKPOINT僵尸错误
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)菜鸟学数据库(三)——存储过程
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转载)Linux网络编程入门
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET 反射 Reflect
  • .NET 中 GetProcess 相关方法的性能
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET与 java通用的3DES加密解密方法