盗号网站怎么做农业网站建设源代码 ASP
- 作者: 五速梦信息网
- 时间: 2026年03月21日 11:26
当前位置: 首页 > news >正文
盗号网站怎么做,农业网站建设源代码 ASP,办公室装修铺哪种地板,建设网站公司需要哪些证件FastApi中的常见请求类型 后端开发语言中#xff0c;我钟情于node#xff0c;高效的异步处理真是让我眼前一亮#xff0c;同时#xff0c;简单易懂的语法也让我非常倾心 但是但是#xff0c;因为考虑要写一个深度学习算法的后端接口#xff0c;所以不得不选用python作为…FastApi中的常见请求类型 后端开发语言中我钟情于node高效的异步处理真是让我眼前一亮同时简单易懂的语法也让我非常倾心 但是但是因为考虑要写一个深度学习算法的后端接口所以不得不选用python作为后端进行开发并不是我不喜欢Python相反Python作为我的第一语言我同样非常喜欢只不过我更喜欢用它来做数据分析 关于Python的后端框架在Django和fastapi中我最终选择了fastapi。相当长的一段时间里我都是用Django在写后端但是Django太臃肿了重量级的框架很多地方难以学透在现在前后端分离的大环境下Django的模板语法优势也并不大 相反fastapi只专注于后端接口开发同时也提供了和node相似的异步处理程序。在学习fastapi过程中记录了以下几种常见的接口请求方式 一、主程序构建 在请求之前先记录一下如何把后端服务跑起来 根目录下创建main.py文件代码如下 #!/usr/bin/env python
-- coding:utf-8 --
author:HP
datetime:2024/6/28 16:30from fastapi import FastAPI
import uvicorn
from apps.app01 import app01app FastAPI()
app.include_router(app01)if name main:uvicorn.run(main:app, port8001, reloadTrue)
两点需要注意 路由分发即app.include_router(app01)路由处理函数写在于main文件同目录下的apps文件夹下该文件夹下面有一个app01.py的路由处理文件里面就是各种路由的处理函数当一个项目同时存在多个子项时可以创建多个app.py文件实现路由分发 服务启动命令uvicorn.run(main:app, port8001, reloadTrue)很多情况下需要在终端执行这句代码以启动服务但这么操作非常不方便也记不住因此把这行代码写在main函数中只要运行这个程序就可以正常启动服务了注意reloadTrue表示自动重启服务也就是代码改了之后服务就会自动重启
二、请求类型
请求类型大概包括路径参数、查询参数、请求体参数、form表单上传和文件上传这么几种其中文件上传是最复杂的我先把全部的代码放进来然后一一解释
apps/app01.py中的代码
#!/usr/bin/env python
-- coding:utf-8 --
author:HP
datetime:2024/6/28 16:30
from fastapi import APIRouter, Form, File, UploadFile from pydantic import BaseModel from datetime import date, datetime from typing import List import osapp01 APIRouter()class User(BaseModel):name: str root # 默认值age: intbirth: datefriends: List[int]# 路径参数 app01.get(/user/{id}) async def get_user(id: int):print(id)return {user_id: id}# 查询参数 app01.get(/jobs) async def get_jobs(kd, gjNone, xlNone):return {kd: kd,gj: gj,xl: xl,}# 请求体参数 app01.post(/data) async def get_data(data: User):return data# form表单数据 app01.post(/register) async def register(username: str Form(), password: str Form()):print(username)print(———-)print(password)return {username: username,}# 上传单个文件 app01.post(/upload) async def upload(file: bytes File()):# 这里的file直接就是字节流没有其他信息# 将文件存储到服务器# 获取当前时间精确到毫秒current_time datetime.now().strftime(%Y%m%d%H%M%S%f)[:-3] # 去掉最后的毫秒部分的最后一位确保文件名合法filename current_time .jpgpath os.path.join(imgs, filename)with open(path, wb) as f:f.write(file)return {status: 1,message: success,file: filename,}# 上传多个文件 app01.post(/uploads) async def uploads(files: List[bytes] File()):for file in files:print(len(file))return {file: len(files)}# 更加常用的文件上传方式但postman中无法测试因为数据中不支持UploadFile类型的数据
上传单个文件
app01.post(/uploadFlie) async def upload_file(file: UploadFile):current_time datetime.now().strftime(%Y%m%d%H%M%S%f)[:-3] # 去掉最后的毫秒部分的最后一位确保文件名合法filename current_time .jpgpath os.path.join(imgs, filename)with open(path, wb) as f:for line in file.file:f.write(line)return {origin_name: file.filename,sever_name: filename,}# 上传多个文件 app01.post(/uploadFiles) async def upload_files(files: List[UploadFile]):print(files)return {file: len(files),}1、路径参数
路径参数
app01.get(/user/{id}) async def get_user(id: int):print(id)return {user_id: id}请求示例 请求参数写在路径上通常用于处理表格中的数据比较好理解 2、查询参数
查询参数
app01.get(/jobs) async def get_jobs(kd, gjNone, xlNone):return {kd: kd,gj: gj,xl: xl,}postman中的请求示例 这也挺简单的以查询参数的形式传递参数通常来说就是路由中?后面的都是查询参数用分割 3、请求体参数 一般用是post请求中把参数封装在body请求体中
请求体参数
app01.post(/data) async def get_data(data: User):return data这里用到了pydantic中的BaseModel模型User模型继承于BaseModel主要得记住写法 同样看看postman中的请求示例 在postman中body参数要写在raw下这里不是表单数据不能写在x-www-form-urlencoded中 其实也挺简单的 4、form表单参数 这里正好与第3点请求体参数比较一下
form表单数据
app01.post(/register) async def register(username: str Form(), password: str Form()):print(username)print(———-)print(password)return {username: username,}fastapi中封装好了Form表单数据的数据类型这和postman中的x-www-form-urlencoded定义的form数据是一样的 看看postman中的请求示例 参数位置不一样 5、文件上传 1上传单个文件
上传单个文件
app01.post(/upload) async def upload(file: bytes File()):# 这里的file直接就是字节流没有其他信息# 将文件存储到服务器# 获取当前时间精确到毫秒current_time datetime.now().strftime(%Y%m%d%H%M%S%f)[:-3] # 去掉最后的毫秒部分的最后一位确保文件名合法filename current_time .jpgpath os.path.join(imgs, filename)with open(path, wb) as f:f.write(file)return {status: 1,message: success,file: filename,}目标前端上传文件并将文件保存在服务器中与main.py同名的imgs文件夹下文件名是当前时间到毫秒.jpg 注意这里的file是字节流可以直接写到文件中同样也可以在postman中测试 服务器下的imgs文件夹下多了一张图片 2上传多个文件
上传多个文件
app01.post(/uploads) async def uploads(files: List[bytes] File()):for file in files:print(len(file))return {file: len(files)}这里没再写文件存储的过程与上传单个文件差不多看看postman中的示例 3UploadFile上传单个文件 前面两种情况应该已经能满足大部分情况了但是fastapi封装了一种专用于文件上传的UploadFile类代码如下
更加常用的文件上传方式但postman中无法测试因为数据中不支持UploadFile类型的数据
上传单个文件
app01.post(/uploadFlie) async def upload_file(file: UploadFile):current_time datetime.now().strftime(%Y%m%d%H%M%S%f)[:-3] # 去掉最后的毫秒部分的最后一位确保文件名合法filename current_time .jpgpath os.path.join(imgs, filename)with open(path, wb) as f:for line in file.file:f.write(line)return {origin_name: file.filename,sever_name: filename,}因为这是fastapi封装的postman不兼容所以postman没法测用fastapi自带的接口测试文档看下示例 同样看看服务器端的imgs目录 可以看到对应的地方多了一张图片 需要注意的是这里上传的file就并不再是纯字节流数据了而是fastapi封装的UploadFile对象需要知道这个对象里有哪些内容可以查看源码也可以借助编译器逐个去看 4UploadFile上传多个文件
上传多个文件
app01.post(/uploadFiles) async def upload_files(files: List[UploadFile]):print(files)return {file: len(files),}理解了UploadFile上传单个文件多个文件就不难了看看接口测试文档中的示例 无非是多了个添加item的选项而已 对象里有哪些内容可以查看源码也可以借助编译器逐个去看 好了学习完接口的请求类型后面应该要学习orm了。。
- 上一篇: 盗版视频网站怎么做的怎样销售网站
- 下一篇: 道滘东莞微信网站建设常州网站建设方案书
相关文章
-
盗版视频网站怎么做的怎样销售网站
盗版视频网站怎么做的怎样销售网站
- 技术栈
- 2026年03月21日
-
到哪里找人做网站不允许网站建设协议
到哪里找人做网站不允许网站建设协议
- 技术栈
- 2026年03月21日
-
导视设计网站有声直播网站建设
导视设计网站有声直播网站建设
- 技术栈
- 2026年03月21日
-
道滘东莞微信网站建设常州网站建设方案书
道滘东莞微信网站建设常州网站建设方案书
- 技术栈
- 2026年03月21日
-
道滘网站仿做深圳网站设计灵点网络口碑好
道滘网站仿做深圳网站设计灵点网络口碑好
- 技术栈
- 2026年03月21日
-
道路建设去什么网站能看到wordpress增加访问速度
道路建设去什么网站能看到wordpress增加访问速度
- 技术栈
- 2026年03月21日






