多语言 SDK
官方 SDK、iframe Demo 与请求/响应示例托管在 GitHub,便于接入方后端快速调用模板、会话、解析与 PDF 接口。SDK 仅封装公开的 appSecret 能力,不包含开发者登录注册或 iframe 内部 editorToken 接口。
语言与文档
| 语言 | 说明 | GitHub |
|---|---|---|
| Node.js | 推荐;本地 Demo 直接引用。需 Node.js ≥ 18 | sdk/nodejs |
| PHP | 需 ext-curl;Composer 可引入 | sdk/php |
| Python | 标准库实现,无第三方依赖 | sdk/python |
| Java | JDK 11+,无第三方 HTTP 库 | sdk/java |
统一能力
- 获取模板列表
GET /v1/templates - 创建 / 恢复编辑会话
POST /v1/editor-sessions - 查询与充值会话额度
- 解析简历(文本 / 文件)
POST /v1/resumes/parse - 生成简历诊断与 PDF 报告
POST /v1/resumes/diagnose - 同步生成 PDF
POST /v1/resumes/pdf
appSecret 只能放在接入方后端环境变量中,不要写入前端、App、小程序或 Git 仓库。Node.js 示例
const { QmOpenClient } = require("@qmjianli/open-sdk");
const client = new QmOpenClient({
appSecret: process.env.QM_APP_SECRET
});
const session = await client.createEditorSession({
parentOrigin: "https://hr.example.com",
externalResumeId: "R10001",
sessionBalanceCents: 1000,
resumeData: { setData: { tplId: 1013 } }
});
// 把 session.editorUrl 立即交给前端 iframePHP 示例
use QmJianli\Open\Client;
$client = new Client(getenv('QM_APP_SECRET'));
$session = $client->createEditorSession([
'parentOrigin' => 'https://hr.example.com',
'externalResumeId' => 'R10001',
'sessionBalanceCents' => 1000,
'resumeData' => ['setData' => ['tplId' => 1013]],
]);
echo $session['editorUrl'];Python 示例
import os
from qmjianli_open import QmOpenClient
client = QmOpenClient(app_secret=os.environ["QM_APP_SECRET"])
session = client.create_editor_session({
"parentOrigin": "https://hr.example.com",
"externalResumeId": "R10001",
"sessionBalanceCents": 1000,
"resumeData": {"setData": {"tplId": 1013}},
})
print(session["editorUrl"])Java 示例
QmOpenClient client = new QmOpenClient(System.getenv("QM_APP_SECRET"));
Map<String, Object> setData = new LinkedHashMap<>();
setData.put("tplId", 1013);
Map<String, Object> resumeData = new LinkedHashMap<>();
resumeData.put("setData", setData);
Map<String, Object> body = new LinkedHashMap<>();
body.put("parentOrigin", "https://hr.example.com");
body.put("externalResumeId", "R10001");
body.put("sessionBalanceCents", 1000);
body.put("resumeData", resumeData);
String sessionJson = client.createEditorSession(QmOpenClient.toJson(body));