Skip to content

Commit 4813f9b

Browse files
添加文档
1 parent 2a717fc commit 4813f9b

16 files changed

Lines changed: 5129 additions & 5 deletions

docs/api/components.md

Lines changed: 468 additions & 0 deletions
Large diffs are not rendered by default.

docs/api/core.md

Lines changed: 316 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,316 @@
1+
# 核心模块 API
2+
3+
FastAPI Amis 核心模块的 API 参考文档。
4+
5+
## AmisSite
6+
7+
站点管理类,用于创建和管理整个管理后台应用。
8+
9+
### 类定义
10+
11+
```python
12+
class AmisSite:
13+
def __init__(
14+
self,
15+
title: str = "Admin",
16+
logo: Optional[str] = None,
17+
favicon: Optional[str] = None,
18+
description: Optional[str] = None,
19+
theme: str = "cxd",
20+
layout: str = "aside",
21+
**kwargs
22+
)
23+
```
24+
25+
### 参数
26+
27+
- `title` (str): 站点标题,默认 "Admin"
28+
- `logo` (Optional[str]): Logo URL
29+
- `favicon` (Optional[str]): 网站图标 URL
30+
- `description` (Optional[str]): 站点描述
31+
- `theme` (str): 主题名称,默认 "cxd"
32+
- `layout` (str): 布局模式,默认 "aside"
33+
34+
### 方法
35+
36+
#### add_router
37+
38+
添加路由器到站点。
39+
40+
```python
41+
def add_router(
42+
self,
43+
router: AmisViewRouter,
44+
*,
45+
visible: bool = True
46+
) -> None
47+
```
48+
49+
**参数:**
50+
51+
- `router` (AmisViewRouter): 要添加的路由器
52+
- `visible` (bool): 是否在导航中显示,默认 True
53+
54+
**示例:**
55+
56+
```python
57+
site = AmisSite(title="管理后台")
58+
user_router = AmisViewRouter(name="用户管理")
59+
site.add_router(user_router)
60+
```
61+
62+
#### mount_to_app
63+
64+
将站点挂载到 FastAPI 应用。
65+
66+
```python
67+
def mount_to_app(
68+
self,
69+
app: FastAPI,
70+
*,
71+
prefix: str = "",
72+
tags: Optional[List[str]] = None
73+
) -> None
74+
```
75+
76+
**参数:**
77+
78+
- `app` (FastAPI): FastAPI 应用实例
79+
- `prefix` (str): URL 前缀,默认 ""
80+
- `tags` (Optional[List[str]]): OpenAPI 标签
81+
82+
**示例:**
83+
84+
```python
85+
app = FastAPI()
86+
site.mount_to_app(app, prefix="/admin")
87+
```
88+
89+
## AmisViewRouter
90+
91+
路由器类,用于组织相关的视图。
92+
93+
### 类定义
94+
95+
```python
96+
class AmisViewRouter:
97+
def __init__(
98+
self,
99+
name: str,
100+
type: str = "page",
101+
icon: Optional[str] = None,
102+
visible: bool = True,
103+
**kwargs
104+
)
105+
```
106+
107+
### 参数
108+
109+
- `name` (str): 路由器名称,显示在导航中
110+
- `type` (str): 路由类型,默认 "page"
111+
- `icon` (Optional[str]): 图标类名
112+
- `visible` (bool): 是否在导航中显示,默认 True
113+
114+
### 方法
115+
116+
#### register
117+
118+
装饰器方法,用于注册视图到路由器。
119+
120+
```python
121+
def register(
122+
self,
123+
view_class: Type[AmisView]
124+
) -> Type[AmisView]
125+
```
126+
127+
**参数:**
128+
129+
- `view_class` (Type[AmisView]): 视图类
130+
131+
**返回:**
132+
133+
- Type[AmisView]: 注册后的视图类
134+
135+
**示例:**
136+
137+
```python
138+
router = AmisViewRouter(name="用户管理")
139+
140+
@router.register
141+
class UserListView(AmisView):
142+
page_schema = "用户列表"
143+
url = "/users"
144+
page = Page(...)
145+
```
146+
147+
## AmisView
148+
149+
视图基类,所有页面视图都应继承此类。
150+
151+
### 类定义
152+
153+
```python
154+
class AmisView:
155+
page_schema: str
156+
url: str
157+
page: Page
158+
icon: Optional[str] = None
159+
visible: bool = True
160+
dependencies: List[Depends] = []
161+
```
162+
163+
### 属性
164+
165+
- `page_schema` (str): 页面描述
166+
- `url` (str): 访问路径
167+
- `page` (Page): Amis Page 组件实例
168+
- `icon` (Optional[str]): 页面图标
169+
- `visible` (bool): 是否在导航中显示
170+
- `dependencies` (List[Depends]): FastAPI 依赖项列表
171+
172+
### 示例
173+
174+
```python
175+
class MyView(AmisView):
176+
page_schema = "我的页面"
177+
url = "/my-page"
178+
page = Page(
179+
title="页面标题",
180+
body=[...]
181+
)
182+
```
183+
184+
### 高级用法
185+
186+
#### 动态页面
187+
188+
可以通过方法动态生成页面内容:
189+
190+
```python
191+
class DynamicView(AmisView):
192+
page_schema = "动态页面"
193+
url = "/dynamic"
194+
195+
def get_page(self, request: Request) -> Page:
196+
"""根据请求动态生成页面"""
197+
user = request.state.user
198+
return Page(
199+
title=f"欢迎 {user.name}",
200+
body=[...]
201+
)
202+
```
203+
204+
#### 依赖注入
205+
206+
使用 FastAPI 的依赖注入:
207+
208+
```python
209+
from fastapi import Depends
210+
211+
def get_current_user(request: Request):
212+
return request.state.user
213+
214+
class UserProfileView(AmisView):
215+
page_schema = "个人资料"
216+
url = "/profile"
217+
dependencies = [Depends(get_current_user)]
218+
page = Page(...)
219+
```
220+
221+
## 类型定义
222+
223+
### BaseAmisModel
224+
225+
所有 Amis 组件的基类。
226+
227+
```python
228+
from pydantic import BaseModel
229+
230+
class BaseAmisModel(BaseModel):
231+
type: str
232+
233+
class Config:
234+
extra = "allow"
235+
```
236+
237+
### PageSchema
238+
239+
页面配置的类型定义。
240+
241+
```python
242+
class PageSchema(BaseModel):
243+
title: Optional[str] = None
244+
subTitle: Optional[str] = None
245+
body: Union[Dict, List, str]
246+
toolbar: Optional[List] = None
247+
aside: Optional[Dict] = None
248+
```
249+
250+
## 工具函数
251+
252+
### create_app_from_site
253+
254+
从站点创建 FastAPI 应用的便捷函数。
255+
256+
```python
257+
def create_app_from_site(
258+
site: AmisSite,
259+
**fastapi_kwargs
260+
) -> FastAPI:
261+
"""创建并配置 FastAPI 应用"""
262+
app = FastAPI(**fastapi_kwargs)
263+
site.mount_to_app(app)
264+
return app
265+
```
266+
267+
**示例:**
268+
269+
```python
270+
site = AmisSite(title="管理后台")
271+
# ... 配置站点
272+
273+
app = create_app_from_site(
274+
site,
275+
title="管理后台 API",
276+
version="1.0.0"
277+
)
278+
```
279+
280+
## 异常类
281+
282+
### AmisException
283+
284+
框架的基础异常类。
285+
286+
```python
287+
class AmisException(Exception):
288+
def __init__(
289+
self,
290+
message: str,
291+
status_code: int = 400,
292+
**kwargs
293+
):
294+
self.message = message
295+
self.status_code = status_code
296+
self.extra = kwargs
297+
```
298+
299+
**示例:**
300+
301+
```python
302+
from fastapi_amis.extensions.exception import AmisException
303+
304+
if not user:
305+
raise AmisException(
306+
message="用户不存在",
307+
status_code=404
308+
)
309+
```
310+
311+
## 下一步
312+
313+
- [Amis 组件 API](components.md) - Amis 组件的 API 参考
314+
- [扩展功能 API](extensions.md) - 扩展模块的 API 参考
315+
- [类型定义](types.md) - 完整的类型定义
316+

0 commit comments

Comments
 (0)