Files
hertz_django/docs/API接口文档/代码生成模块接口文档.md
2025-11-17 16:39:30 +08:00

123 lines
4.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Hertz Studio Django 代码生成模块接口文档
- 基础路径: `/api/codegen/`
- 统一响应: 使用 `HertzResponse`,结构如下(参考 `hertz_studio_django_utils/responses/HertzResponse.py`
```json
{
"success": true,
"code": 200,
"message": "操作成功",
"data": {}
}
```
- 路由挂载: 项目主路由中已通过 `path('api/codegen/', include(('hertz_studio_django_codegen.urls', 'hertz_studio_django_codegen'), namespace='codegen'))` 挂载(`hertz_server_django/urls.py:51`)。
- 认证说明: 接口需要登录,需在请求头携带 `Authorization: Bearer <token>``hertz_studio_django_codegen/views/simple_generator_views.py:136`)。
## 一、简化代码生成
### 生成应用代码与菜单配置
- 方法: `POST`
- 路径: `/api/codegen/simple/generate/`
- 认证: 需要登录
- 实现: `simple_code_generate``hertz_studio_django_codegen/views/simple_generator_views.py:136`
- 请求体: `application/json`
- 字段:
- `module_name` 字符串,模块中文名,例如 `产品管理`
- `model_name` 字符串,模型英文名,例如 `Product`
- `app_name` 字符串Django 应用名称,例如 `hertz_studio_django_product`
- `fields` 数组,字段定义列表,每项包含:`name`、`type`、`verbose_name`、`help_text`、`required`、`max_length`、`choices`
- `operations` 数组,支持的操作,默认 `['list','create','update','delete']`
- `menu_config` 对象,菜单配置:`enabled`、`parent_code`、`prefix`、`sort_order`、`icon`
- `generate_app` 布尔,是否生成应用代码,默认 `true`
- `generate_menu` 布尔,是否生成菜单配置,默认 `true`
- 请求示例(同时生成应用与菜单):
```http
POST /api/codegen/simple/generate/
Authorization: Bearer <token>
Content-Type: application/json
{
"module_name": "产品管理",
"model_name": "Product",
"app_name": "hertz_studio_django_product",
"fields": [
{"name": "name", "type": "CharField", "verbose_name": "产品名称", "required": true, "max_length": 100},
{"name": "price", "type": "FloatField", "verbose_name": "价格", "required": true},
{"name": "status", "type": "IntegerField", "verbose_name": "状态", "choices": [[0,"下线"],[1,"上线"]]}
],
"operations": ["list","create","update","delete"],
"menu_config": {"enabled": true, "parent_code": "system", "prefix": "product", "sort_order": 10, "icon": "box"},
"generate_app": true,
"generate_menu": true
}
```
- 返回示例(成功):
```json
{
"success": true,
"code": 200,
"message": "成功生成产品管理模块代码和菜单配置",
"data": {
"generated_files": {
"hertz_studio_django_product/models.py": "...",
"hertz_studio_django_product/serializers.py": "...",
"hertz_studio_django_product/views.py": "...",
"hertz_studio_django_product/urls.py": "...",
"hertz_studio_django_product/apps.py": "..."
},
"menu_configs": [
{"code": "product", "name": "产品管理", "type": "menu", "sort_order": 10},
{"code": "product:list", "name": "产品列表", "type": "permission", "sort_order": 11}
],
"app_path": "hertz_studio_django_product",
"menu_file": "d:/All_template/yolo/pending_menus_product.py"
}
}
```
- 请求示例(仅生成菜单配置):
```http
POST /api/codegen/simple/generate/
Authorization: Bearer <token>
Content-Type: application/json
{
"module_name": "库存管理",
"model_name": "Inventory",
"app_name": "hertz_studio_django_inventory",
"fields": [],
"operations": ["list"],
"menu_config": {"enabled": true, "parent_code": "system", "prefix": "inventory"},
"generate_app": false,
"generate_menu": true
}
```
- 返回示例(仅菜单):
```json
{
"success": true,
"code": 200,
"message": "成功生成库存管理模块代码和菜单配置",
"data": {
"generated_files": {},
"menu_configs": [{"code": "inventory", "name": "库存管理", "type": "menu"}],
"app_path": "",
"menu_file": "d:/All_template/yolo/pending_menus_inventory.py"
}
}
```
## 二、错误响应示例
- 缺少必填参数:
```json
{"success": false, "code": 422, "message": "缺少必填参数: fields"}
```
- 请求体格式错误非JSON:
```json
{"success": false, "code": 422, "message": "请求参数格式错误请使用JSON格式"}
```
- 生成失败(异常信息):
```json
{"success": false, "code": 500, "message": "代码生成失败: <错误信息>"}
```