Skip to content

Commit f435f1a

Browse files
committed
feat: 新增一篇博客
强大、灵活、轻量级ASGI框架: Starlette
1 parent 52fd616 commit f435f1a

File tree

2 files changed

+112
-3
lines changed

2 files changed

+112
-3
lines changed

docs/.vitepress/config.mjs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,10 @@ let nav_tmp = [
5050
{ text: 'Django笔记', link: '/Python/系列文章/django' },
5151
{ text: '23种设计模式-Python', link: '/Python/系列文章/23种设计模式/' },
5252
{ text: 'PyQt6实战开发之旅', link: '/Python/系列文章/PyQt6实战开发之旅' },
53-
{ text: '探索SimpleUI:让Django Admin焕发现代光彩', link: '/Python/系列文章/探索SimpleUI:让Django Admin焕发现代光彩' },
54-
{ text: 'Python标准库:typing', link: '/Python/系列文章/typing-intro' },
55-
{ text: 'Python数据验证和序列化:Pydantic', link: '/Python/系列文章/Pydantic' },
53+
{ text: '探索SimpleUI: 让Django Admin焕发现代光彩', link: '/Python/系列文章/探索SimpleUI:让Django Admin焕发现代光彩' },
54+
{ text: 'Python标准库: typing', link: '/Python/系列文章/typing-intro' },
55+
{ text: '数据验证和序列化: Pydantic', link: '/Python/系列文章/Pydantic' },
56+
{ text: '强大、灵活、轻量级ASGI框架: Starlette', link: '/Python/系列文章/Starlette' },
5657
]
5758
},
5859
]
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
# Starlette 简介
2+
Starlette 是一个轻量级的 **ASGI(Asynchronous Server Gateway Interface)** 框架,专为构建高性能的异步 Web 应用而设计。它是 Python 生态系统中广受欢迎的 Web 框架 **FastAPI** 的基础框架。Starlette 提供了一套简洁而强大的工具集,帮助开发者快速构建高效、可扩展的 Web 服务。
3+
4+
---
5+
6+
## Starlette 的主要特点
7+
以下是 Starlette 的核心特性:
8+
9+
1. **异步支持**
10+
Starlette 充分利用 Python 的异步编程模型,支持 `async``await` 语法,允许开发者编写非阻塞代码,从而显著提升应用的并发处理能力。
11+
2. **轻量级设计**
12+
与全栈框架相比,Starlette 非常轻量,专注于提供路由、请求和响应处理等核心功能,避免了冗余组件的负担。
13+
3. **高性能**
14+
得益于异步特性和轻量级设计,Starlette 在处理大量并发请求时表现出色,非常适合高性能 Web 应用。
15+
4. **ASGI 兼容**
16+
Starlette 完全遵循 ASGI 标准,可以无缝集成任何 ASGI 服务器,例如 **Uvicorn****Daphne**
17+
5. **中间件支持**
18+
Starlette 提供灵活的中间件系统,开发者可以在请求和响应的处理过程中插入自定义逻辑。
19+
6. **WebSocket 支持**
20+
内置对 WebSocket 的支持,使得开发实时应用(如聊天室或数据推送)变得简单高效。
21+
7. **模板渲染**
22+
虽然 Starlette 本身不附带模板引擎,但它与 **Jinja2** 等工具集成良好,方便生成动态 HTML 页面。
23+
8. **静态文件服务**
24+
Starlette 支持轻松服务静态文件,例如 CSS、JavaScript 和图片。
25+
9. **请求和响应对象**
26+
提供直观的 API 来处理 HTTP 请求和构建响应,简化开发流程。
27+
10. **测试客户端**
28+
内置测试客户端,便于开发者进行单元测试和集成测试,确保应用质量。
29+
30+
---
31+
32+
## 如何使用 Starlette
33+
### 安装
34+
要开始使用 Starlette,需要通过 `pip` 安装它,通常会搭配一个 ASGI 服务器(如 Uvicorn):
35+
36+
```bash
37+
pip install starlette uvicorn
38+
```
39+
40+
### 创建一个简单的应用
41+
以下是一个简单的 Starlette Web 应用示例:
42+
43+
```python
44+
from starlette.applications import Starlette
45+
from starlette.responses import JSONResponse
46+
from starlette.routing import Route
47+
48+
# 定义首页处理函数
49+
async def homepage(request):
50+
return JSONResponse({'hello': 'world'})
51+
52+
# 配置路由
53+
routes = [
54+
Route("/", homepage),
55+
]
56+
57+
# 创建 Starlette 应用
58+
app = Starlette(debug=True, routes=routes)
59+
```
60+
61+
在这个例子中:
62+
63+
+ 我们定义了一个路由 `/`,访问该路径时返回 JSON 数据 `{"hello": "world"}`
64+
+ `debug=True` 开启调试模式,便于开发。
65+
66+
### 运行应用
67+
使用 Uvicorn 运行应用:
68+
69+
```bash
70+
uvicorn your_module:app
71+
```
72+
73+
其中 `your_module` 是包含 `app` 的 Python 文件名。运行后,访问 `http://127.0.0.1:8000/` 即可看到返回的 JSON 响应。
74+
75+
---
76+
77+
## Starlette 的核心组件
78+
1. **路由**
79+
Starlette 使用路由将 URL 路径映射到对应的处理函数,支持路径参数和查询参数等功能。
80+
2. **请求对象**
81+
`request` 对象封装了 HTTP 请求的信息,包括请求方法、URL、头部、查询参数等。
82+
3. **响应对象**
83+
提供多种响应类型,如 `JSONResponse`(返回 JSON)、`HTMLResponse`(返回 HTML)、`RedirectResponse`(重定向)等。
84+
4. **中间件**
85+
中间件允许在请求处理的不同阶段执行自定义代码,例如日志记录或身份验证。
86+
5. **WebSocket**
87+
通过 `WebSocket` 对象支持实时双向通信,适用于需要即时响应的场景。
88+
89+
---
90+
91+
## Starlette 与 FastAPI 的关系
92+
Starlette 是 **FastAPI** 的底层框架。FastAPI 在 Starlette 的基础上增加了更多高级功能,例如:
93+
94+
+ 自动生成 API 文档(基于 OpenAPI)。
95+
+ 数据验证(通过 Pydantic)。
96+
+ 依赖注入系统。
97+
98+
因此,Starlette 更适合需要轻量级框架的场景,而 FastAPI 则更专注于快速开发复杂的 RESTful API。
99+
100+
---
101+
102+
## 总结
103+
Starlette 是一个功能强大、灵活且轻量级的 ASGI 框架,非常适合构建高性能的异步 Web 应用。它对异步编程的优秀支持、简洁的设计以及与现代 Python 技术的兼容性,使其成为开发者的理想选择。无论是简单的 API 服务还是复杂的实时应用,Starlette 都能提供坚实的基础。
104+
105+
106+
107+
108+

0 commit comments

Comments
 (0)