fastapi_服务端口开发

fastapi

观念

 如果Web开发已经很少用后端模版(??),大部分用前后端分离的方式通过API提供数据交互,那么 Django和Flask主要用途是API应用
	 Django REST Framework
	 APIFlask 
	Flask扩展方式, Flask Context等知识, 
	FastAPI的思路是依赖注入,不需要创建插件,这个灵活度很高,不用像Django和Flask必须适配。
	  作为API应用确实不需要模版引擎,如果需要,它也提供了Jinja2相关部分
一些商业场景(例如CMS)Django依然是首选   	 

fastapi 处理数据

BackgroundTasks 如果任务较小(如短信通知等),且需要在同一 FastAPI 应用中访问变量和对象,使用 BackgroundTasks 即可		

        路径参数 路径参数是通过 URL 路径传递的参数,例如 /item/{item_id}
		查询参数 查询参数是通过 URL 的查询字符串传递的,例如 /items?search=something。
		表单数据 如果你需要从表单数据中获取参数,你可以使用 Form 类型
		JSON 数据 对于 POST 请求中的 JSON 数据,你可以直接将数据作为函数参数传递
		    直接使用 request 对象 通常不是最佳实践。
			  使用Body函数 :通过from fastapi import Body导入Body函数,将参数声明为从请求体中获取
			最佳实践是使用 FastAPI 的依赖注入和类型提示系统来获取请求数据,FastAPI 的依赖注入和类型提示系统可以更好地保证类型安全和代码清晰
			    使用 Pydantic 模型 :使用 Pydantic 模型来定义请求体的结构和验证规则,然后在接口函数中将该模型作为参数类型
			FastAPI中建议使用 Pydantic 模型声明请求体	
                FastAPI 的 Depends 是用于依赖注入的核心工具,
		API开发中数据格式的验证、解析和序列化是很常用的
		
	集成了Pydantic,所以非常容易在项目中添加ORM(如SQLAlchemy),
	从请求中获得的对象可以直接传递到数据库,因为已经做过数据验证。反之亦然,可以将从数据库获取的对象直接返回。	

路由管理

  在fastapi 中也有类似的功能通过 APIRouter 来管理
  在 Flask 中,我们一般用蓝图 Blueprint 来处理多个模块的视图,
    1、路由的注册过程
        1)使用 FastAPI 实例注册路由
        2)使用 APIRouter 模块化路由
        3)路由注册装饰器方法
		
	include_router 来统一在一个文件里进行路由管理	

判断依据

果你想知道有多少人在用 Flask 和 FastAPI,
  有两个参考数据,
      一个是 GitHub 上开源项目的用户数量统计。这些可以在两个项目的 GitHub 主页直接看到。
      另一个数据是 PyPI 下载量,这个可以在 PyPI Download Stats 上看到		
	老项目的存在-下载量代表的价值有限
  Flask和FastAPI现阶段都足够稳定,但是FastAPI有足够的优势,	
    sqlmodel sqlalchemy

请求

    如果参数的类型被声明为一个 Pydantic 模型,它将被解释为请求体

   curl -X POST "http://127.0.0.1:8000/items/" -H "Content-Type: application/json" \
  -d '{"name": "Apple", "description": "Fresh red apple", "price": 3.5, "in_stock": true}'

响应

   JSONResponse 是 FastAPI 的默认响应类型,它会将数据转换为 JSON 格式,并设置Content-Type为application/json。
   ORJSONResponse 当追求极致性能时,可使用ORJSONResponse,它基于orjson库实现,序列化速度更快,适合大数据量响应。
   PlainTextResponse 返回纯文本内容时,使用 PlainTextResponse,设置Content-Type为text/plain
   RedirectResponse 用于实现 HTTP 重定向,默认状态码为 307(临时重定向),也可自定义状态码
   处理大文件或持续生成的数据时,StreamingResponse能避免一次性加载全部内容,提升内存使用效率。 
   FileResponse用于异步流式传输文件,会自动添加Content-Length、Last-Modified等响应头。
岗位职责:
   2. 使用Python进行Web应用开发,至少使用一种Python开发框架,如Django、FastAPI等
任职要求:   
   熟练使用FastAPI web后端框架

fastapi参数

APIRouter 就给我们提供了在多个文件中注册路由的功能

参数类型:路径参数 与 查询参数  请求体参数
      路径参数  用于指定URL的某个部分,通常用于标识资源的唯一性,
	  查询参数则用于提供过滤条件或额外的选项
      请求体参数 要发送请求正文,必须使用一个:POST, PUT,DELETE或PATCH,需导入 Pydantic 的 BaseModel 		  
参数校验
      查询参数校验 长度限制、修改名称、正则限制…	

SQLAlchemy

SQLAlchemy - The Database Toolkit for Python		  
 SQLModel+ sqlite 适合初创项目、小型 API 服务:教学、内部工具、后台系统 搭配 FastAPI 效果最佳:天然一对
 SQLAlchemy + PG
 
 
SQLModel 
    create_engine 用于创建数据库引擎,连接到指定的数据库
    SQLModel.metadata.create_all  用于创建所有定义的表	
    Session  用于创建数据库会话 
       调用 session.add 方法添加数据。
	   调用 session.commit 提交数据

       select 用于生成查询语句 		
       session.exec 用于执行查询语句

参考

FastAPI 实现异步任务处理  https://blog.csdn.net/h1773655323/article/details/143775646	
 一起学 FastAPI https://github.com/ttfont/your-fastapi	
 https://fastapi.tiangolo.com/zh/
 https://zhuanlan.zhihu.com/p/673847164
 https://zhuanlan.zhihu.com/p/673774673	
https://dev.to/blamsa0mine/-building-a-user-management-api-with-fastapi-and-sqlite-e53
  https://www.geeksforgeeks.org/python/fastapi-sqlite-databases/
 https://github.com/JiayuXu0/FastAPI-Template	  
  https://github.com/thekingofhero2/nicegui-enough/blob/main/05%E7%AE%A1%E7%90%86%E5%90%8E%E5%8F%B0/main.py	 
posted @ 2025-08-15 17:41  辰令  阅读(18)  评论(0)    收藏  举报