Files
ProjectAGiPrompt/8-CMII-RMDC/19-deploy/RMDC-Postman-Collection.json
2026-01-21 16:15:49 +08:00

479 lines
19 KiB
JSON
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.

{
"info": {
"_postman_id": "rmdc-api-collection-2026",
"name": "RMDC API Collection",
"description": "RMDC系统API测试集合\n\n## 使用说明\n\n1. 导入此Collection后首先运行 `Auth > 1. 获取RSA公钥` 请求\n2. 然后运行 `Auth > 2. RSA加密登录` 请求\n3. 登录成功后Token会自动保存其他请求无需手动配置认证\n\n## 环境变量\n- `baseUrl`: API基础地址默认 http://localhost:8080\n- `username`: 登录用户名\n- `password`: 登录密码",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{token}}",
"type": "string"
}
]
},
"event": [
{
"listen": "prerequest",
"script": {
"type": "text/javascript",
"exec": [
"// Collection级别的预处理脚本",
"// 自动检查token是否存在"
]
}
},
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"// Collection级别的测试脚本"
]
}
}
],
"variable": [
{
"key": "baseUrl",
"value": "http://localhost:8080",
"type": "string"
},
{
"key": "username",
"value": "admin",
"type": "string"
},
{
"key": "password",
"value": "supercyy.1",
"type": "string"
},
{
"key": "token",
"value": "",
"type": "string"
},
{
"key": "rsaPublicKey",
"value": "",
"type": "string"
}
],
"item": [
{
"name": "Auth",
"description": "认证相关接口",
"item": [
{
"name": "1. 获取RSA公钥",
"event": [
{
"listen": "test",
"script": {
"exec": [
"pm.test('获取公钥成功', function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"if (jsonData.public_key) {",
" pm.collectionVariables.set('rsaPublicKey', jsonData.public_key);",
" console.log('RSA公钥已保存');",
"}"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/auth/rsa/public-key",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"auth",
"rsa",
"public-key"
]
}
}
},
{
"name": "2. RSA加密登录",
"event": [
{
"listen": "prerequest",
"script": {
"exec": [
"// RSA加密函数 (使用PKCS1v15填充)",
"const forge = require('node-forge');",
"",
"const publicKeyPem = pm.collectionVariables.get('rsaPublicKey');",
"const password = pm.collectionVariables.get('password');",
"",
"if (!publicKeyPem) {",
" console.error('请先运行\"获取RSA公钥\"请求');",
" throw new Error('RSA公钥未获取');",
"}",
"",
"try {",
" // 解析PEM格式的公钥",
" const publicKey = forge.pki.publicKeyFromPem(publicKeyPem);",
" ",
" // 使用RSA-OAEP加密 (SHA-256)",
" const encrypted = publicKey.encrypt(password, 'RSA-OAEP', {",
" md: forge.md.sha256.create()",
" });",
" ",
" // 转换为Base64",
" const encryptedBase64 = forge.util.encode64(encrypted);",
" ",
" pm.collectionVariables.set('encryptedPassword', encryptedBase64);",
" console.log('密码加密成功');",
"} catch (e) {",
" console.error('RSA加密失败:', e);",
" throw e;",
"}"
],
"type": "text/javascript"
}
},
{
"listen": "test",
"script": {
"exec": [
"pm.test('登录成功', function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"",
"if (jsonData.token) {",
" pm.collectionVariables.set('token', jsonData.token);",
" console.log('Token已保存到Collection变量');",
" console.log('用户:', jsonData.user?.username);",
"}",
"",
"if (jsonData.must_change_password) {",
" console.warn('警告: 密码已过期,需要修改');",
"}",
"",
"if (jsonData.password_expire_days > 0) {",
" console.warn('提示: 密码将在 ' + jsonData.password_expire_days + ' 天后过期');",
"}"
],
"type": "text/javascript"
}
}
],
"request": {
"auth": {
"type": "noauth"
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"username\": \"{{username}}\",\n \"encrypted_password\": \"{{encryptedPassword}}\"\n}"
},
"url": {
"raw": "{{baseUrl}}/api/auth/login",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"auth",
"login"
]
}
}
},
{
"name": "3. 明文密码登录(备用)",
"event": [
{
"listen": "test",
"script": {
"exec": [
"pm.test('登录成功', function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"",
"if (jsonData.token) {",
" pm.collectionVariables.set('token', jsonData.token);",
" console.log('Token已保存');",
"}"
],
"type": "text/javascript"
}
}
],
"request": {
"auth": {
"type": "noauth"
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"username\": \"{{username}}\",\n \"password\": \"{{password}}\"\n}"
},
"url": {
"raw": "{{baseUrl}}/api/auth/login",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"auth",
"login"
]
}
}
}
]
},
{
"name": "Contacts",
"description": "通信录接口",
"item": [
{
"name": "获取通信录列表",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/contacts?page=1&size=20",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"contacts"
],
"query": [
{
"key": "page",
"value": "1"
},
{
"key": "size",
"value": "20"
},
{
"key": "search",
"value": "",
"disabled": true
}
]
}
}
},
{
"name": "获取联系人详情",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/contacts/1",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"contacts",
"1"
]
}
}
}
]
},
{
"name": "Users",
"description": "用户管理接口 (需要Admin权限)",
"item": [
{
"name": "获取用户列表",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/users?page=1&size=20",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"users"
],
"query": [
{
"key": "page",
"value": "1"
},
{
"key": "size",
"value": "20"
},
{
"key": "status",
"value": "active",
"disabled": true
},
{
"key": "search",
"value": "",
"disabled": true
}
]
}
}
},
{
"name": "获取用户详情",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/users/1",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"users",
"1"
]
}
}
}
]
},
{
"name": "User Profile",
"description": "用户个人接口",
"item": [
{
"name": "修改密码",
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"current_password\": \"{{password}}\",\n \"new_password\": \"NewPassword123\"\n}"
},
"url": {
"raw": "{{baseUrl}}/api/user/password",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"user",
"password"
]
}
}
},
{
"name": "更新个人资料",
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"avatar_id\": \"default_1\",\n \"avatar_frame_id\": \"default\"\n}"
},
"url": {
"raw": "{{baseUrl}}/api/user/profile",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"user",
"profile"
]
}
}
}
]
},
{
"name": "Permissions",
"description": "权限管理接口",
"item": [
{
"name": "获取我的权限树",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/permissions/my-tree/full",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"permissions",
"my-tree",
"full"
]
}
}
},
{
"name": "获取我的组织列表",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/permissions/my-tree/organizations",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"permissions",
"my-tree",
"organizations"
]
}
}
}
]
}
]
}