FastAPI+Vue3零基础开发ERP系统项目实战课 20240831上课笔记 路径参数

本文主要是介绍FastAPI+Vue3零基础开发ERP系统项目实战课 20240831上课笔记 路径参数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

遗留的问题

  • 3、FastAPI
  • 4、MySQL8
  • 5、SQLModel,和FastAPI框架是同一个作者,两者结合比较好用,但是学习成本较高,使用难度稍大
  • 6、Vue3
  • 7、Tailwindcss
  • 8、Ant Design Vue,UI组件库
  • 9、数据同步:有一个API,这个API提供了一些数据,需要在ERP系统中进行展示。
  • 10、登录注册需要吗?需要
  • 11、第三方平台管理:对接哪些接口平台飞书,钉钉,聚水潭等等
  • 12、用户管理
  • 13、Docker
  • 14、Linux
  • 15、Nginx
  • 16、项目部署实战

任务:安装postman

下载地址:https://www.postman.com/downloads/

测试我们的第一个接口

接口代码:

from fastapi import FastAPIapp = FastAPI()@app.get("/")
async def root():return {"message": "Hello World"}if __name__ == '__main__':import uvicornuvicorn.run(app, host='0.0.0.0', port=8888)

使用postman进行测试:
在这里插入图片描述

路径参数

官方文档:https://fastapi.tiangolo.com/zh/tutorial/path-params/

官方描述

在这里插入图片描述

什么是路径参数

路径参数,指的是写在URL网址的路径里面的值,它能够将URL中某个路径的值进行捕获,转换为Python的变量。

比如我们经常要根据ID获取用户信息,可能访问的是:http://127.0.0.1:8888/user/3 ,这里的3,可能表示的就是用户的ID,这个ID是动态变化的,可能是1,2,3...任何ID。我们在程序中想要进行捕获,就是需要使用路径参数。

怎么去定义路径参数

比如 http://127.0.0.1:8888/user/3 这个网址中,我们想要对用户的ID进行捕获,我们就可以定义为 /user/{id},这里的 {id} 就会被FastAPI自动转换为一个叫 id 的变量名,在路由方法中,就可以使用这个变量获取到路径中的真实值,也就是 3

什么是路由方法?

比如下面的代码:

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

root 就是一个路由方法,专门用来处理 / 这个路由的逻辑,当我们访问 http://127.0.0.1:8888/ 的时候,会自动执行这个方法。这种专门用来处理某个特定路由的方法,就叫做路由方法。

什么是路径?

比如在上面的方法中,@app.get("/"),在这段代码中,括号中的字符串,就表示路径。路径指的是我们域名后面紧跟着的访问地址,比如http://127.0.0.1:8888/http://127.0.0.1:8888叫做域名,在真实的线上环境中,可能会被替换为一个网址,比如http://www.baidu.com。域名后面紧跟着就是/,这个斜杆就是访问的地址,也就是路径。

这里的路径是网址中的路径,无论什么系统都是 /,这点和文件路径不一样。

怎么获取路径变量

比如下面的代码:

@app.get("/items/{item_id}")
async def read_item(item_id):return {"item_id": item_id}

我们在定义完路径参数@app.get("/items/{item_id}")之后,紧跟着,一定要在方法的参数中,写一个完全相同的变量名async def read_item(item_id),最后,我们在方法体中,就可以把路径参数,当成一个正常的变量名return {"item_id": item_id}去进行使用了。

案例:根据ID获取用户的信息

首先参考代码:

@app.get("/items/{item_id}")
async def read_item(item_id):return {"item_id": item_id}

然后,我们改一下路径和变量名:

@app.get("/user/{id}")
async def read_item(id):return {"id": id}

具体实践:

from fastapi import FastAPIapp = FastAPI()@app.get("/user/{id}")
async def get_user_by_id(id):return {"id": id}if __name__ == '__main__':import uvicornuvicorn.run(app, host='0.0.0.0', port=8888)

测试:
在这里插入图片描述

简单总结

  • 什么是路径参数:写在域名后面的,可以被捕获为变量的特殊路径
  • 怎么定义路径参数:先在路径中使用花括号捕获,然后在方法参数中声明一个完全相同的变量
  • 什么时候使用路径参数:比如想要根据ID获取用户信息的时候,ID可能是任意变化的,这个时候就可以把ID设置成路径参数

声明路径参数的类型

使用 Python 标准类型注解,声明路径操作函数中路径参数的类型。

from fastapi import FastAPIapp = FastAPI()@app.get("/items/{item_id}")
async def read_item(item_id: int):return {"item_id": item_id}

本例把 item_id 的类型声明为 int。

回顾基础数据类型

  • int:整数
  • str:字符串
  • bool:布尔值
  • list:列表
  • dict:字典
  • tuple:元组
  • set:集合
  • float:浮点数

继续根据ID获取用户信息的案例

ID应该是什么类型?

  • int整数类型:这种时候,一般是数据库设置了自增ID
  • str字符串类型:这种时候,ID可能是UUID字符串,可能是其他算法生成的字符串

什么是ID?

  • id(Identity document),是身份证标识号、账号、唯一编码、专属号码、工业设计、国家简称、法律词汇、通用账户、译码器、软件公司等各类专有词汇的缩写。
  • 是一个唯一的表示,全局只能出现一次,不能重复

如何声明路径参数的类型

在方法参数中,read_item(item_id: int) 通过冒号:拼接参数类型,在参数名称后面跟冒号,冒号后面声明这个参数的具体类型即可。

案例:声明ID为int类型

from fastapi import FastAPIapp = FastAPI()@app.get("/user/{id}")
async def get_user_by_id(id: int):return {"id": id}if __name__ == '__main__':import uvicornuvicorn.run(app, host='0.0.0.0', port=8888)

修改之前的结果:
在这里插入图片描述

修改之后的结果:
在这里插入图片描述

修改之前,是有双引号的,表示是字符串类型。修改之后没有双引号了,表示是整数类型。

数据校验

当我们声明了路径参数类型以后,数据就会被自动校验。

比如我们根据ID获取用户信息,id被声明为int类型,此时如果你传个不能转换为int类型的字符串过去,就会报错。

比如:
在这里插入图片描述

查看文档

FastAPI会自动给我们的每个接口生成一个接口文档。

访问 http://127.0.0.1:8000/docs,查看自动生成的 API 文档:

在这里插入图片描述

这个接口文档是可以执行的:
在这里插入图片描述

文件路径参数

示例代码如下:

from fastapi import FastAPIapp = FastAPI()@app.get("/files/{file_path:path}")
async def read_file(file_path: str):return {"file_path": file_path}

注意,声明文件路径作为路径参数,需要遵循特殊的语法:{file_path:path},这个时候,会把 /files/后面的所有内容都捕获,然后转换为路径参数变量。比如我们传递的是/files/a/b/c.txt,这个时候file_path的值就是a/b/c.txt

实践:

from fastapi import FastAPIapp = FastAPI()@app.get("/user/{avatar:path}")
async def get_user_avatar(avatar: str):return {"avatar": avatar}if __name__ == '__main__':import uvicornuvicorn.run(app, host='0.0.0.0', port=8888)

使用postman测试:
在这里插入图片描述

总结

  • 路径参数
  • 怎么捕获文件路径?{avatar:path}
  • 怎么定义路径参数?/user/{id}
  • 什么时候使用路径参数?当我们需要通过路径传递变量值的时候,比如用户ID,比如博客ID

URL 示例

比如CSDN的一个网址:https://blog.csdn.net/qq_37703224/article/details/141724195?spm=1001.2014.3001.5501

  • 域名:https://blog.csdn.net
  • 路径参数:/qq_37703224/article/details/141724195
  • 查询参数:?spm=1001.2014.3001.5501

路径参数:/qq_37703224/article/details/141724195

  • 第一个路径很明显就是一个路径参数,用来确定是哪个用户,可以认为是用户名或者用户ID
  • 第二个路径表示的类型,article表示文章,这个可能是路径参数,也可能不是
  • 第三个路径表示的是详情,detail,这个一般都不是路径参数,也就是不是一个变量
  • 第四个路径表示的是文章的ID,这个很明显也是一个路径参数,也就是一个变量

这篇关于FastAPI+Vue3零基础开发ERP系统项目实战课 20240831上课笔记 路径参数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1126737

相关文章

MySQL9.0默认路径安装下重置root密码

《MySQL9.0默认路径安装下重置root密码》本文主要介绍了MySQL9.0默认路径安装下重置root密码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录问题描述环境描述解决方法正常模式下修改密码报错原因问题描述mysqlChina编程采用默认安装路径,

禁止HTML页面滚动的操作方法

《禁止HTML页面滚动的操作方法》:本文主要介绍了三种禁止HTML页面滚动的方法:通过CSS的overflow属性、使用JavaScript的滚动事件监听器以及使用CSS的position:fixed属性,每种方法都有其适用场景和优缺点,详细内容请阅读本文,希望能对你有所帮助... 在前端开发中,禁止htm

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

Java使用Tesseract-OCR实战教程

《Java使用Tesseract-OCR实战教程》本文介绍了如何在Java中使用Tesseract-OCR进行文本提取,包括Tesseract-OCR的安装、中文训练库的配置、依赖库的引入以及具体的代... 目录Java使用Tesseract-OCRTesseract-OCR安装配置中文训练库引入依赖代码实

Vue3中的动态组件详解

《Vue3中的动态组件详解》本文介绍了Vue3中的动态组件,通过`component:is=动态组件名或组件对象/component`来实现根据条件动态渲染不同的组件,此外,还提到了使用`markRa... 目录vue3动态组件动态组件的基本使用第一种写法第二种写法性能优化解决方法总结Vue3动态组件动态

spring-boot-starter-thymeleaf加载外部html文件方式

《spring-boot-starter-thymeleaf加载外部html文件方式》本文介绍了在SpringMVC中使用Thymeleaf模板引擎加载外部HTML文件的方法,以及在SpringBoo... 目录1.Thymeleaf介绍2.springboot使用thymeleaf2.1.引入spring

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景