# fastapi-tutorial **Repository Path**: githubgay/fastapi-tutorial ## Basic Information - **Project Name**: fastapi-tutorial - **Description**: 【慕课网】【独家新技术】从0到1学习 FastAPI 框架的所有知识点 https://www.bilibili.com/video/BV1iN411X72b?p=1 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-07-14 - **Last Updated**: 2024-07-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### FastAPI的主要特点 - 性能优越 - 开发效率高 200% ~ 3000% - 较少约40%人为bug - 直观 - 易学易用 - 精简编码 代码重复率低 - 自带API交互文档 开发成果随时交付 ### Starlette,Pydantic与FastAPI的关系 - Python的类型提示 type hint - Pydantic 是一个基于Python类型提示来定义数据验证,序列化和文档(使用JSON)库 - Starlette是一种轻量级的ASGI框架/工具包,时候见高性能AsyncIO服务的理想选择 ### ASGI vs WSGI 1. 同步 vs 异步 - WSGI - 同步。即在一个请求被完全处理完毕之前,服务器不会接受新的请求。每个请求在处理时会阻塞其他请求,直到当前请求完成。 - ASGI - 异步。允许服务器同时处理多个请求。这使得ASGI能够更好地处理高并发和需要长时间运行的任务,如WebSocket连接。 2. 处理模型 - WSGI:通常使用多线程或多进程模型来处理并发请求,每个请求在一个独立的线程或进程中运行。 - ASGI:使用事件循环和协程(coroutines)来处理并发请求,允许多个请求共享相同的线程或进程,通过异步IO来避免阻塞。 3. 协议支持 - WSGI:主要支持HTTP协议,用于处理传统的网页请求。 - ASGI:除了支持HTTP,还支持WebSocket和其他异步协议,这使得它更适合实时应用和双向通信场景。 4. 性能 - WSGI:在处理大量短时间的HTTP请求时表现良好,但在处理长时间运行的请求或高并发场景时可能效率较低。 - ASGI:在处理高并发和长时间运行的请求时表现出更好的性能,因为它不需要为每个请求分配额外的资源。 - 5. 框架和服务器支持 - WSGI:被大多数传统的Python Web框架如Flask和Django原生支持。 - ASGI:被一些现代框架如Django Channels、FastAPI和Starlette支持,同时也有一些专门的ASGI服务器如uvicorn和Daphne。 > 总的来说,ASGI是WSGI的扩展,旨在解决现代Web应用的需求,特别是那些需要处理大量并发连接和实时通信的应用。 ### OAuth2.0 的授权模式 - 授权码授权模式 - 隐式授权模式 - **密码授权模式** - 客户端凭证授权模式 ``` python -m pip install --upgrade pip pip install virtualenv python -m virtualenv venv cd venv/Scripts/ .\activate (powershell) source activate (bash/zsh) cd ../../ pip install -r requirements.txt ```