fastapi的安装

使用pip安装

安装fastapi的语句

pip install fastapi

可以使用国内阿里云镜像源进行安装,会快很多

pip install fastapi -i https://mirrors.aliyun.com/pypi/simple

api启动依赖于uvicorn,还需要安装uvicorn

pip install uvicorn -i https://mirrors.aliyun.com/pypi/simple

验证是否安装成功

新建test.py文件

from fastapi import FastAPI

app = FastAPI()


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

使用终端开启uvicorn服务

 uvicorn fastapi学习.test:app --reload
  • fastapi学习.test:fastapi学习包下的test.py文件(可以理解为Python模块)
  • app:test.py文件中app = FastAPI()创建的app对象
  • --reload:在代码改变后重启服务器,只能在开发的时候使用

可以看到如下输出

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

然后打开浏览器,输入: http://127.0.0.1:8000

可以看到

 终端也会输出

INFO:     127.0.0.1:57700 - "GET / HTTP/1.1" 200 OK

访问 http://127.0.0.1:8000/docs,会看到自动生成的API交互文档

 

INFO:     127.0.0.1:57699 - "GET /docs HTTP/1.1" 200 OK
INFO:     127.0.0.1:57699 - "GET /openapi.json HTTP/1.1" 200 OK

FastAPI程序结构

编写一个简单的FastAPI程序需要五个小步骤

from fastapi import FastAPI

app = FastAPI()

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

第一步,导入FastAPI

from fastapi import FastAPI

第二步,创建一个app实例

app = FastAPI()

第三步,编写一个 路径操作装饰器

@app.get("/")
  • 可以将get操作方法更改成@app.post()、@app.put()、@app.delete()等方法
  • 可以更改相应的路径("/")为自己想要的,例如更改为("/hello_word/")

第四步,编写一个路径操作函数,例如下面代码中的root函数。它位于路径操作装饰器下方

def root():
    return {"message": "Hello World"}

这个函数的返回值可以是dict,list,单独的值,比如str,int,或者是Pydantic模型

第五步、运行开发服务器uvicorn main:app --reload即可访问api链接

例如在终端运行uvicorn main:app --reload之后,在浏览器输入127.0.0.1:8000,出现"message": "Hello World"这句话

在这里可以自己指定要运行的服务器ip和端口号

例如:uvicorn main:app --host 127.0.0.1 --port 8001 --reload表示指定本地电脑为服务器,端口号为8001

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/531272.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring之AOP的详细讲解

目录 一.SpringAOP是什么? 1.1理论知识点 1.2简单的AOP例子 二.SpringAOP的核心概念 2.1切点(Pointcut) 2.2通知(Advice) 2.3切⾯(Aspect) 2.4通知类型 2.5切⾯优先级 Order 2.6切点表达式 2.6.1 execution表达式 2.6.2annotati…

PHP 伪协议:使用 php://input 访问原始 POST 数据

文章目录 参考环境PHP 伪协议概念为什么需要 PHP 伪协议? php://input为什么需要 php://input?更灵活的数据处理减小性能压力 发送 POST 数据HackBarHackBar 插件的获取 $_POST打开 HackBar 插件通过 HackBar 插件发起 POST 请求 基操 enable_post_data_…

【ros】结果实时在线可视化

文章目录 一、前言二、订阅与发布三、回调四、可视化 4.1、初始化参数4.2、初始化图片 4.3、画结果 4.4、可视化结果 一、前言 感知与规划控制是无人驾驶算法重要算法,在交付测试阶段也最容易引起摩擦,这也是司空见惯的现象。有时候可能是接口对齐问题…

AI绘画与建筑大师共创出的作品,震惊了?!

在CAD制图盛行的今天,手绘依然是许多建筑大师首选的灵感记录方式。建筑大师西扎曾说过:草图能迅速的记录下他思维的瞬间,并再一次激发他更深入的思考。 看完这些建筑大师的手稿,不得不让人表示:这和医生处方手迹简直有…

【满满干货】聚合接口—自动化工具㊣

背景 在介绍接口自动化之前先给大家分享一下我所理解的“业务中台”的概念:业务中台是将企业的核心能力以数字化形式沉淀为各种服务中心,其目的是“提供企业能够快速,低成本创新的能力”。 例如公司内部的业务a、业务b同时有订单、登录等功…

企业网盘私有化部署和本地私有化部署的区别

在当今数据量激增的背景下,企业如何高效、安全地管理和传输大量数据成为了一个关键问题。企业网盘作为一种解决方案,其部署方式直接影响到数据的安全性、工作效率的提升以及运营成本的控制。私有化部署与本地化部署是两种主流的企业网盘部署策略&#xf…

C语言_文件操作

文件基础 什么是文件 文件是在计算机中以实现某种功能、或某个软件的部分功能为目的而定义的一个单位。磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分的)。 程序文件 …

【MATLAB源码-第33期】matlab基于遗传算法的多层编码柔性作业车间调度问题仿真

操作环境: MATLAB 2022a 1、算法描述 1. 遗传算法: 遗传算法是一种基于自然选择和遗传遗传学的优化算法。它模拟了生物进化的过程,通过对问题解的编码(通常以染色体或基因型的形式)、交叉、变异等操作来生成新的解。…

Coze 识别用户意图

文章目录 Coze 识别用户意图 Coze 识别用户意图 本文将通过 LLM 节点、Condition 节点和插件节点构建一个用于识别用户意图的工作流。 效果示例 本文构建的示例工作流概览如下。 在该工作流中: 使用 LLM 节点将用户输入数据分为 1(天气)、…

Flume实时读取目录文件到HDFS案例

【尚硅谷】大数据技术之Flume教程从入门到实战_哔哩哔哩_bilibili 目录 flume简介 flume案例 1、监控端口数据官方案例 2、实时读取目录文件到HDFS案例 flume简介 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系…

【UE Niagara】烟雾特效

效果 步骤 1. 创建一个材质,这里命名为“M_Smoke” 设置混合模式为半透明,着色模型为无光照 连接如下节点 其中纹理采样节点所使用的纹理为引擎自带的“T_SmokeSubUV_8x8” 2. 新建一个Niagara发射器,模板使用“Empty”,这里命名…

MLeaksFinder报错

1.报错:FBClassStrongLayout.mm 文件:layoutCache[currentClass] ivars; 解决:替换为layoutCache[(id)currentClass] ivars; 2.编译正常但运行时出现crash indirect_symbol_bindings[i] cur->rebinding FBRetainCycleDetector iOS15 …

亚马逊运营必看!如何运用自养号测评获得买家评论转销量?

作为亚马逊卖家,相信大家对亚马逊的产品星级评分 (Rating) 都不陌生,这几颗亮眼的星星,不仅可以让你的Listing脱颖而出,获得足够多、足够高的产品评分,也是促使消费者下单的重要因素之一。 那么,亚马逊运营…

DepthFormer论文详解

摘要 本文旨在解决有监督单目深度估计的问题,我们从一项细致的试点研究开始,以证明远程相关性对于准确的深度估计至关重要。我们建议使用Transformer以有效地注意力机制对这种全局上下文进行建模。我们还采用一个额外的卷积分支来保留局部信息&#xff0…

NPU编译MultiScaleDeformableAttention

NPU对pytorch,想将检测模型在NPU上训练,存在编译MultiScaleDeformableAttention的需求。 然而,原dino模型https://github.com/IDEA-Research/DINO/tree/main/models/dino/ops/src 仅包含CPU版本和GPU版本: 是不是就真的无法解决…

2024/4/5—力扣—在排序数组中查找元素的第一个和最后一个位置

代码实现: 思路:二分法 方法一:分别查找左右侧边界 /*** Note: The returned array must be malloced, assume caller calls free().*/ int GetTargetFirstPosition(int *nums, int numsSize, int target) {int l 0, r numsSize - 1;while …

【北京迅为】《iTOP-3588开发板开发板系统编程手册》第3章 标准IO

RK3588是一款低功耗、高性能的处理器,适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用,RK3588支持8K视频编解码,内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

蓝桥杯复习笔记

文章目录 gridflexhtml表格合并单元格 表单表单元素input类型 select h5文件上传拖拽apiweb Storage css块元素和行内元素转换positionfloat溢出显示隐藏外边距过渡和动画动画变形选择器属性选择伪类选择器 css3边框圆角边框阴影渐变text-overflow与word-wrap jsdom操作documen…

STL容器之unordered_set类

文章目录 STL容器之unordered_set类1、unordered系列关联式容器2、unordered_set2.1、unordered_set介绍2.2、unordered_set的使用2.2.1、unordered_set的常见构造2.2.2、unordered_set的迭代器2.2.3、unordered_set的容量2.2.4、unordered_set的增删查2.2.5、unordered_set的桶…

C++--this指针

this 指针是一个隐含于每一个成员函数中的特殊指针。它是指向一个正操作该成员函数的对象。当对一个对象调用成员函数时,编译程序先将对象的地址赋予this指针,然后调用成员函数。每次成员函数存取数据成员时,C编译器将根据 this 指针所指向的…