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…...
非写代码无以致远
标题党一下,本篇文章主要汇总了一些代码题,让大家写一些代码练习一下吧! 变种水仙花_牛客题霸_牛客网 (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,和一个目标值 target。找出给定目标值在数组中的开始…...
从0到1构建uniapp应用-store状态管理
背景 在 UniApp的开发中,状态管理的目标是确保应用数据的一致性,提升用户体验,并简化开发者的工作流程。通过合理的状态管理,可以有效地处理用户交互、数据同步和界面更新等问题。 此文主要用store来管理用户的登陆信息。 重要…...
Uinx线程详解
目录 一.什么是线程? 并发(Concurrency) 并行(Parallelism) 1.1 线程的概念 1.2 线程的基本函数 1.3 线程的基本使用例子: 二.线程的属性 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.宿主机层面变更:参数调优 & 配置调整 & 硬件升级2.集群层面变更:参数调优3.索引层面变更:mapping调整 当然还有使用层面变更,使用API调优(不属于该文章的讨论范围…...
Spirngboot JWT快速配置和使用
2、JWT 2.1、JWT介绍 JWT是JSON Web Token的缩写,即JSON Web令牌,是一种自包含令牌。 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。 JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从…...
【Java SE】继承
🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 文章目录 1. 继承1.1 继承是什么1.2 继承的意义1.3 继承的语法1.4 继承的方式1.5 子类中访问父类成员1.5.1 子类中访问…...
设计模式(19):策略模式
策略模式 策略模式对应与解决某一个问题的一个算法族,允许用户从该算法族中任选一个算法解决某一问题,同时可以方便的更换算法或者增加新的算法。并且由客户端决定调用哪个算法。 本质 分离算法,选择实现; 策略模式角色 上下…...
Linux 命令 top 详解
1 top命令介绍 Linux系统中,Top命令主要用于实时运行系统的监控,包括Linux内核管理的进程或者线程的资源占用情况。这个命令对所有正在运行的进程和系统负荷提供不断更新的概览信息,包括系统负载、CPU利用分布情况、内存使用、每个进程的内容…...
Android安卓开发 - 简单介绍(一)
最近呢需要重构还有维护安卓项目,所以最近会从零开始梳理开发的一些知识点以及开发的内容 前面已经写了安装的教程,idea怎么安装,还有官方的开发工具Android Studio怎么安装 2024最新版Android studio安装入门教程(非常详细&…...
AJAX —— 学习(二)
目录 一、利用 JSON 字符串 返回数据 (一)基础代码 (二)原理及实现 二、nodmon 工具 自动重启服务 (一)用途 (二)下载 (三)使用 三、IE 缓存问题 &a…...
CSC博士联培申请时间线
暂时只记得这么多了,有问题会及时修改。 #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编程实践
目录 一.实验内容 二.实验目的 三.实验过程截图及说明 1、安装HBase 2、配置伪分布式模式: 3、使用hbase的shell命令来操作表: 4、使用hbase提供的javaAPI来编程实现类似操作: 5、实验总结及心得体会…...
【Python】Pillow支持的图像文件格式
完全支持格式只读格式只写格式仅标识格式BLPCURPALMBUFRBMPDCXPDFGRIBDDSFITSXV ThumbnailsHDF5DIBFLCMPEGEPSFPXGIFFTEXICNSGBRICOGDIMIMTJPEGIPTC/NAAJPEG 2000MCIDASMSPMICPCXMPOPNGPCDPPMPIXARSGIPSDSPIDERQOITGASUNTIFFWALwebpWMF、EMFXBMXPM 参考文献 图像文件格式 - P…...
算法——最小生成树
Prim算法: 算法步骤: 1.选择一个起始节点作为最小生成树的起点。 2.将该起始节点加入最小生成树集合,并将其标记为已访问。 3.在所有与最小生成树集合相邻的边中,选择权重最小的边和它连接的未访问节点。 4.将该边和节点加入最小…...
OpenHarmony相机和媒体库-如何在ArkTS中调用相机拍照和录像。
介绍 此Demo展示如何在ArkTS中调用相机拍照和录像,以及如何使用媒体库接口进行媒体文件的增、删、改、查操作。 本示例用到了权限管理能力ohos.abilityAccessCtrl 相机模块能力接口ohos.multimedia.camera 图片处理接口ohos.multimedia.image 音视频相关媒体业…...
runtime.js实战部署:从本地QEMU到云端KVM的完整流程指南
runtime.js实战部署:从本地QEMU到云端KVM的完整流程指南 【免费下载链接】runtime [not maintained] Lightweight JavaScript library operating system for the cloud 项目地址: https://gitcode.com/gh_mirrors/runt/runtime runtime.js是一个革命性的Java…...
LVGL Canvas画布实战:5分钟教你制作一个可交互的简易绘图板
LVGL Canvas画布实战:5分钟教你制作一个可交互的简易绘图板 在嵌入式GUI开发领域,LVGL因其轻量级和高度可定制性成为众多开发者的首选。而Canvas画布控件作为其核心组件之一,能够实现从简单图形绘制到复杂交互界面的各种功能。今天࿰…...
BetterRTX终极教程:5分钟免费提升Minecraft画质的完整方案
BetterRTX终极教程:5分钟免费提升Minecraft画质的完整方案 【免费下载链接】BetterRTX-Installer The Powershell Installer for BetterRTX! BetterRTX is a Ray-Tracing mod for Minecraft Bedrock. 项目地址: https://gitcode.com/gh_mirrors/be/BetterRTX-Inst…...
直面2026检测算法:英文论文降AI实战,3款工具深度避坑盘点
赶稿季来临,英文长稿的AI率到底该怎么降?不少同学愁的头都要秃了,不要再一个词一个词的扣了,这不仅慢,还会把好好的学术英语改得支离破碎。 坦率的讲,真正聪明的降ai,绝对不是机械替换…...
Windows Defender 彻底移除工具:专业级系统安全组件管理解决方案
Windows Defender 彻底移除工具:专业级系统安全组件管理解决方案 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_m…...
网络优化工具开发全解析:从协议选型到多平台实现与运维
1. 网络连接优化工具的技术原理与实现思路在当今的互联网环境下,许多用户会遇到访问特定在线服务或资源时速度缓慢、连接不稳定甚至无法访问的情况。这背后通常涉及到复杂的网络路由、地域性内容分发策略以及网络基础设施的差异。为了解决这类问题,一些开…...
【大模型服务治理实战指南】:奇点智能大会首发的7大避坑法则与3套可落地架构模板
更多请点击: https://intelliparadigm.com 第一章:大模型服务治理:奇点智能大会 在2024年奇点智能大会上,大模型服务治理成为核心议题。随着LLM推理服务规模化部署,企业面临模型版本混乱、流量调度失衡、资源隔离缺失…...
Chopstick工具:高效管理多Git仓库的批量操作与自动化实践
1. 项目概述与核心价值 最近在GitHub上看到一个挺有意思的项目,叫 chopstick ,作者是DustinMeyer1010。光看名字你可能会联想到筷子,但它的实际功能跟餐具可没半点关系。这是一个专门用于 代码仓库(Repository)克隆…...
GE模型加载卸载API
模型加载和卸载 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow…...
基于 Harmony6.0 的城市空气质量监测页面开发实践:ArkUI 页面构建与跨端能力深度解析
基于 Harmony6.0 的城市空气质量监测页面开发实践:ArkUI 页面构建与跨端能力深度解析 前言 随着 HarmonyOS NEXT 与 Harmony6.0 的持续演进,鸿蒙生态已经不再只是“多设备互联”这么简单,而是逐渐形成了一套完整的分布式应用开发体系。相比传…...
