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

FastAPI+React全栈开发14 FastAPI如何开发REST接口

Chapter03 Getting Started with FastAPI

14 How does FastAPI speak REST

FastAPI+React全栈开发14 FastAPI如何开发REST接口

Let’s create a minial FastAPI application, a classic Hello World example, and start examining how FastAPI structures the endpoints. I use the term endpoint to specify a unique combination of an URL (which will always be the same, in our case, our development server, that is, localhost:8000), a path (the part after the slash), and an HTTP method. In a new folder named Chapter 3, for example, create a new Python file using Visual Studio Code.

让我们创建一个小型的FastAPI应用程序,一个经典的Hello World示例,并开始研究FastAPI如何构建端点。我使用术语端点来指定URL(始终是相同的,在我们的示例中,是我们的开发服务器,即localhost:8000)、路径(斜杠后面的部分)和HTTP方法的唯一组合。例如,在名为Chapter 3的新文件夹中,使用Visual Studio Code创建一个新的Python文件。

from fastapi import FastAPIapp = FastAPI()@app.get('/')
async def root():return {"message": "Hello FastAPI"}

In just a few lines of code, we were able to accomplish serveral things. So, let’s break down what each part does.

在短短的几行代码中,我们完成了几件事。那么,让我们分解一下每个部分的作用。

In the first line of main.py, we imported the FastAPI class from the fastapi package. Then, we instantiated an application object (we called it app since that is considered a good practice, but we could have chosen any name). This is just a Python class that provides all the functionality of our API and exposes an ASGI compatible application, this is the application that we have to pass to our server of choice (Uvicorn).

在main.py的第一行,我们从FastAPI包中导入了FastAPI类。然后,我们实例化一个应用程序对象(我们将其称为app,因为这被认为是一种良好的做法,但我们可以选择任何名称)。这只是一个Python类,它提供了我们API的所有功能,并公开了一个ASGI兼容的应用程序,这是我们必须传递给我们选择的服务器(Uvicorn)的应用程序。

The application is now ready and instantiated, but without endpoints, it isn’t able to do or say very much. FastAPI, similar to Flask, another popular Python web framework, exposes decorators for HTTP methods to enable the application to respond. However, we have to implement them.

应用程序现在已经准备好并实例化了,但是没有端点,它就不能做很多事情或说很多话。FastAPI,类似于Flask(另一个流行的Python web框架),为HTTP方法公开装饰器,使应用程序能够响应。然而,我们必须实现它们。

After that, we used the @get decorator, which corresponds to the GET method, and we passed a URL, in our case, we used /, which is the root path.

之后,我们使用了@get装饰器,它对应于GET方法,我们传递了一个URL,在我们的例子中,我们使用了/,这是根路径。

The decorated function is called root, another convention, but it could be called what ever we wanted (any valid Python function name). It is responsible for accepting any arguments (in our case, there aren’t any) and responding. The value that’s returned by the function, which in our case is a simple Python dictionary, will then be transformed into a JSON response and returned by the ASGI server as an HTTP response. This may seem obvious, but I believe that it is useful to break things down into the tiniest bits in the beginning.

修饰函数被称为root,这是另一种约定,但它可以被称为我们想要的任何名称(任何有效的Python函数名)。它负责接受任何参数(在我们的例子中,没有任何参数)并做出响应。函数返回的值(在我们的示例中是一个简单的Python字典)将被转换为JSON响应,并由ASGI服务器作为HTTP响应返回。这似乎是显而易见的,但我相信在开始时将事情分解成最小的部分是有用的。

The preceding code defines a basic fully functional application with a single endpoint. To be able to test it, we need a server, enter Uvicorn.

前面的代码定义了一个具有单个端点的基本全功能应用程序。为了能够测试它,我们需要一个服务器,输入Uvicorn。

Now, go ahead and run the live server with Uvicorn in your command line:

现在,在命令行中使用Uvicorn运行实时服务器:

uvicorn main:app --reload

The previous line is something that you will be using quite a lot when developing with FastAPI, so let’s break ti down.

在使用FastAPI进行开发时,您将经常使用前面的代码行,因此让我们对其进行分解。

This is the out put that you will get if you test our only endpoint with HTTPie (note that when we omit the kyword, it defaults to GET):

如果你用HTTPie测试我们唯一的端点,你会得到这样的输出(注意,当我们省略关键字时,它默认为get):

http localhost:8000

If we wanted to create an endpoint that responds with the same message but for POST requests, we would just have a change the decorator:

如果我们想创建一个端点,用相同的消息响应,但对于POST请求,我们只需要改变装饰器:

from fastapi import FastAPIapp = FastAPI()@app.post('/')
async def root():return {"message": "Hello FastAPI"}if __name__ == '__main__':import uvicornuvicorn.run(app)

HTTPie will respond accordingly in the terminal:

HTTPie将在终端中做出相应的响应:

http POST localhost:8000

相关文章:

FastAPI+React全栈开发14 FastAPI如何开发REST接口

Chapter03 Getting Started with FastAPI 14 How does FastAPI speak REST FastAPIReact全栈开发14 FastAPI如何开发REST接口 Let’s create a minial FastAPI application, a classic Hello World example, and start examining how FastAPI structures the endpoints. I u…...

在 DDD 中,如何处理领域对象的持久化?

在 DDD 中,领域对象的持久化工作通常是通过仓库 Repository 和工厂 Factory 实现的。仓库是一种用于访问领域对象的机制。他负责将领域对象从内存中保存到持久存储,如数据库中,以及从持久存储中检索领域对象。而工厂则负责从持久存储中组装领…...

centos 如何安装nvidia-container-runtime

在CentOS上安装nvidia-container-runtime,首先需要确保你的系统已经安装了NVIDIA的驱动和docker。以下是安装步骤: 确保Docker已安装: sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/lin…...

非写代码无以致远

标题党一下&#xff0c;本篇文章主要汇总了一些代码题&#xff0c;让大家写一些代码练习一下吧&#xff01; 变种水仙花_牛客题霸_牛客网 (nowcoder.com) #include<stdio.h> int main() {for (int i 10000; i < 99999; i) {int sum 0;for (int j 10; j < 1000…...

刷题之Leetcode34题(超级详细)

34. 在排序数组中查找元素的第一个和最后一个位置 力扣链接(opens new window)https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/ 给定一个按照升序排列的整数数组 nums&#xff0c;和一个目标值 target。找出给定目标值在数组中的开始…...

从0到1构建uniapp应用-store状态管理

背景 在 UniApp的开发中&#xff0c;状态管理的目标是确保应用数据的一致性&#xff0c;提升用户体验&#xff0c;并简化开发者的工作流程。通过合理的状态管理&#xff0c;可以有效地处理用户交互、数据同步和界面更新等问题。 此文主要用store来管理用户的登陆信息。 重要…...

Uinx线程详解

目录 一.什么是线程&#xff1f; 并发&#xff08;Concurrency&#xff09; 并行&#xff08;Parallelism&#xff09; 1.1 线程的概念 1.2 线程的基本函数 1.3 线程的基本使用例子&#xff1a; 二.线程的属性 2.1线程属性使用例子 三.线程互斥 3.1互斥锁 3.2互斥锁常用函…...

线性代数笔记23--马尔可夫矩阵、傅里叶级数

1. 马尔可夫矩阵 例子 A [ . 1 . 001 . 3 . 2 . 099 . 3 . 7 0 . 4 ] A \begin{bmatrix} .1 & .001 & .3\\ .2 & .099 & .3\\ .7 & 0 & .4 \end{bmatrix} A ​.1.2.7​.001.0990​.3.3.4​ ​ 马尔可夫矩阵满足条件 λ 1 为特征值 \lambda1为特征…...

Elasticsearch 压测实践总结

背景 搜索、ES运维场景离不开压力测试。 1.宿主机层面变更&#xff1a;参数调优 & 配置调整 & 硬件升级2.集群层面变更&#xff1a;参数调优3.索引层面变更&#xff1a;mapping调整 当然还有使用层面变更&#xff0c;使用API调优&#xff08;不属于该文章的讨论范围…...

Spirngboot JWT快速配置和使用

2、JWT 2.1、JWT介绍 JWT是JSON Web Token的缩写&#xff0c;即JSON Web令牌&#xff0c;是一种自包含令牌。 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。 JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息&#xff0c;以便于从…...

【Java SE】继承

&#x1f970;&#x1f970;&#x1f970;来都来了&#xff0c;不妨点个关注叭&#xff01; &#x1f449;博客主页&#xff1a;欢迎各位大佬!&#x1f448; 文章目录 1. 继承1.1 继承是什么1.2 继承的意义1.3 继承的语法1.4 继承的方式1.5 子类中访问父类成员1.5.1 子类中访问…...

设计模式(19):策略模式

策略模式 策略模式对应与解决某一个问题的一个算法族&#xff0c;允许用户从该算法族中任选一个算法解决某一问题&#xff0c;同时可以方便的更换算法或者增加新的算法。并且由客户端决定调用哪个算法。 本质 分离算法&#xff0c;选择实现&#xff1b; 策略模式角色 上下…...

Linux 命令 top 详解

1 top命令介绍 Linux系统中&#xff0c;Top命令主要用于实时运行系统的监控&#xff0c;包括Linux内核管理的进程或者线程的资源占用情况。这个命令对所有正在运行的进程和系统负荷提供不断更新的概览信息&#xff0c;包括系统负载、CPU利用分布情况、内存使用、每个进程的内容…...

Android安卓开发 - 简单介绍(一)

最近呢需要重构还有维护安卓项目&#xff0c;所以最近会从零开始梳理开发的一些知识点以及开发的内容 前面已经写了安装的教程&#xff0c;idea怎么安装&#xff0c;还有官方的开发工具Android Studio怎么安装 2024最新版Android studio安装入门教程&#xff08;非常详细&…...

AJAX —— 学习(二)

目录 一、利用 JSON 字符串 返回数据 &#xff08;一&#xff09;基础代码 &#xff08;二&#xff09;原理及实现 二、nodmon 工具 自动重启服务 &#xff08;一&#xff09;用途 &#xff08;二&#xff09;下载 &#xff08;三&#xff09;使用 三、IE 缓存问题 &a…...

CSC博士联培申请时间线

暂时只记得这么多了&#xff0c;有问题会及时修改。 #mermaid-svg-ZMjY9etaS7StCVuw {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ZMjY9etaS7StCVuw .error-icon{fill:#552222;}#mermaid-svg-ZMjY9etaS7StCVuw .e…...

大数据实验三-HBase编程实践

目录 一&#xff0e;实验内容 二&#xff0e;实验目的 三&#xff0e;实验过程截图及说明 1、安装HBase 2、配置伪分布式模式&#xff1a; 3、使用hbase的shell命令来操作表&#xff1a; 4、使用hbase提供的javaAPI来编程实现类似操作&#xff1a; 5、实验总结及心得体会…...

【Python】Pillow支持的图像文件格式

完全支持格式只读格式只写格式仅标识格式BLPCURPALMBUFRBMPDCXPDFGRIBDDSFITSXV ThumbnailsHDF5DIBFLCMPEGEPSFPXGIFFTEXICNSGBRICOGDIMIMTJPEGIPTC/NAAJPEG 2000MCIDASMSPMICPCXMPOPNGPCDPPMPIXARSGIPSDSPIDERQOITGASUNTIFFWALwebpWMF、EMFXBMXPM 参考文献 图像文件格式 - P…...

算法——最小生成树

Prim算法&#xff1a; 算法步骤&#xff1a; 1.选择一个起始节点作为最小生成树的起点。 2.将该起始节点加入最小生成树集合&#xff0c;并将其标记为已访问。 3.在所有与最小生成树集合相邻的边中&#xff0c;选择权重最小的边和它连接的未访问节点。 4.将该边和节点加入最小…...

OpenHarmony相机和媒体库-如何在ArkTS中调用相机拍照和录像。

介绍 此Demo展示如何在ArkTS中调用相机拍照和录像&#xff0c;以及如何使用媒体库接口进行媒体文件的增、删、改、查操作。 本示例用到了权限管理能力ohos.abilityAccessCtrl 相机模块能力接口ohos.multimedia.camera 图片处理接口ohos.multimedia.image 音视频相关媒体业…...

【EasyExcel】多sheet、追加列

业务-EasyExcel多sheet、追加列 背景 最近接到一个导出Excel的业务&#xff0c;需求就是多sheet&#xff0c;每个sheet导出不同结构&#xff0c;第一个sheet里面能够根据最后一列动态的追加列&#xff0c;追加多少得看运营人员传了多少需求列。原本使用的 pig4cloud 架子&…...

韩顺平 | 零基础快速学Python

环境准备 开发工具&#xff1a;IDLE、Pycharm、Sublime Text、Eric 、文本编辑器&#xff08;记事本/editplus/notepad&#xff09; Python特点&#xff1a;既支持面向过程OOP、也支持面向对象编程&#xff1b;具有解释性&#xff0c;不需要编程二进制代码&#xff0c;可以直…...

docker部署DOS游戏

下载镜像 docker pull registry.cn-beijing.aliyuncs.com/wuxingge123/dosgame-web-docker:latestdocker-compose部署 vim docker-compose.yml version: 3 services:dosgame:container_name: dosgameimage: registry.cn-beijing.aliyuncs.com/wuxingge123/dosgame-web-docke…...

基于单片机的无线红外报警系统

**单片机设计介绍&#xff0c;基于单片机的无线红外报警系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的无线红外报警系统是一种结合了单片机控制技术和无线红外传感技术的安防系统。该系统通过无线红外传感器实…...

【JAVAEE学习】探究Java中多线程的使用和重点及考点

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…...

Day81:服务攻防-开发框架安全SpringBootStruts2LaravelThinkPHPCVE复现

目录 PHP-框架安全-Thinkphp&Laravel Laravel CVE-2021-3129 RCE Thinkphp 版本3.X RCE-6.X RCE 版本6.X lang RCE J2EE-框架安全-SpringBoot&Struts2 Struct2 旧漏洞(CVE-2016-0785等) struts2 代码执行 &#xff08;CVE-2020-17530&#xff09;s2-061 Str…...

.kat6.l6st6r勒索病毒肆虐,这些应对策略或许能帮到你

引言&#xff1a; 近年来&#xff0c;网络安全问题日益凸显&#xff0c;其中勒索病毒更是成为了公众关注的焦点。其中&#xff0c;.kat6.l6st6r勒索病毒以其独特的传播方式和破坏力&#xff0c;给全球用户带来了极大的困扰。本文将深入探讨.kat6.l6st6r勒索病毒的特点&#xf…...

maya移除节点 修改节点

目录 maya移除节点 使用 Maya 用户界面&#xff1a; 使用脚本&#xff1a; maya 修改节点名字 使用 Maya 用户界面&#xff1a; 使用 MEL 脚本&#xff1a; 使用 Python 脚本&#xff1a; 注意事项&#xff1a; maya移除节点 使用 Maya 用户界面&#xff1a; 在“层次…...

嵌入式算法开发系列之卡尔曼滤波算法

卡尔曼滤波算法 文章目录 卡尔曼滤波算法前言一、卡尔曼滤波算法原理二、算法应用三、C语言实现总结 前言 在嵌入式系统中&#xff0c;传感器数据通常受到噪声、误差和不确定性的影响&#xff0c;因此需要一种有效的方法来估计系统的状态。卡尔曼滤波算法是一种基于概率理论的…...

简述对css工程化的理解

一、css工程化解决了哪些问题 1、宏观设计&#xff1a;css如何组织、拆分、设计模块结构 2、编码优化&#xff1a;如何更好地编写css 3、构建&#xff1a;如何处理css&#xff0c;使打包结果最优 4、可维护性&#xff1a;最小化后续的变更成本 二、针对问题&#xff0c;如何解…...

黑龙江省机场建设集团官网网站/软文客

前言: 搞java开发的时候突然对网络产生了兴趣,兜兜转转最终还是再次学习起了大二时候经常不听课自学的网络原理. 参考视频是慕课网上的 一站式学习Java网络编程 全面理解BIO/NIO/AIO 第二章 与 剑指Java面试-Offer直通车 第二章. 目录 第一章 网络基础知识 1.1 七层网络协议…...

零食网站制作的建设大纲/百度关键词优化公司

一、源码安装首先安装开发工具包yum groupinstall -y "Development tools"安装依赖软件包yum -y install gcc gcc-c zlib-devel bzip2-devel openssl-devel sqlite-devel readline-devel libffi-devel wget上Python 官网 找源码包的下载地址wget https://www.python.…...

专做短篇的网站/网络营销推广方案

使用 curl -I www.sina.com.cn 查看信息 1、隐藏PHP版本信息 vi php.ini 将expose_php On 改为 expose_php Off 如果是LNMP架构&#xff0c;则php-fpm restart 如果是LAMP架构&#xff0c;则重启Apache 2、隐藏Apache版本信息 vi httpd.conf ServerTokens ProductOnly Server…...

wordpress破解插件/seo最新技巧

前言 最近在重温Pytorch基础&#xff0c;然而Pytorch官方文档的各种API是根据字母排列的&#xff0c;并不适合学习阅读。 于是在gayhub上找到了这样一份教程《Pytorch模型训练实用教程》&#xff0c;写得不错&#xff0c;特此根据它来再学习一下Pytorch。 仓库地址&#xff1a…...

求个网站2022/富阳seo关键词优化

国内蓝牙芯片行业面临技术研发风险、市场需求增长放缓、产业链上游垄断&#xff0c;将制约行业的发展速度&#xff0c;影响行业国际竞争力 蓝牙技术新标准公布&#xff0c;企业面临研发风险 2020年1月7日&#xff0c;蓝牙技术联盟推出基于BLE的新一代蓝牙音频技术标准—LE aud…...

安徽建设教育协会网站/石家庄seo关键词排名

所有题目均有四种语言实现。C++ 实现目录、Python实现目录、Java实现目录、JavaScript实现目录 题目 对于任意两个正整数A和B,定义它们之间的差异值和相似值:差异值:A、B转换成二进制后,对于二进制的每一位,对应位置的bit值不相同则为1,否则为0;相似值:A、B转换成二进…...