MBTI(迈尔斯-布里格斯类型指标)是经过 50 余年研究发展形成的性格测评体系,广泛应用于职场、招聘、心理测试等场景。本文基于接口盒子提供的「MBTI-16型人格测试」免费 API,从接口说明、参数、返回值到 PHP / Python 实战调用示例,做一次完整拆解。
一、接口基本信息
项目 |
说明 |
接口地址 |
|
请求方式 |
GET 或 POST |
版本支持 |
基础版 48 题 / 专业版 93 题 / 完整版 200 题 |
二、请求参数说明
通用参数(所有请求都要带)
参数 |
必填 |
说明 |
|
是 |
用户中心数字 ID,如 |
|
是 |
用户中心通讯密钥 |
|
是 |
|
|
是 |
|
按 type 追加的参数
type = 1(获取问题)
num(必填):问题编号,从 1 开始,不能超过当前版本最大题数。
type = 2(提交答案)
qcan(必填):每题答案用英文逗号拼接,每题为A或B,长度须等于对应版本的题数。
- 例:
A,A,A,B,A……
三、返回参数说明
字段 |
说明 |
|
|
|
文字提示(如"通讯秘钥错误") |
|
题目文本(type=1 时返回) |
|
A 选项文本(type=1 时返回) |
|
B 选项文本(type=1 时返回) |
|
人格类型代号,如 |
返回示例
// 获取题目 { "code": 200, "q": "当你参加社交聚会时,你倾向于:", "a": "A. 与多数人交谈,包括陌生人。", "b": "B. 寻找熟悉的人或小团体进行深入交流。" } // 提交答案后 { "code": 200, "mbti": "ESTP" }
四、GET 请求示例(官方原版)
https://接口盒子/api/mingli/mbti.php?id=88888888&key=88888888&type=1&version=3&num=1
五、PHP 调用示例
5.1 获取第 1 题(POST + cURL)
<?php $api = 'https://接口盒子/api/mingli/mbti.php'; $params = [ 'id' => '你的ID', 'key' => '你的KEY', 'type' => 1, 'version' => 3, // 完整版 200 题 'num' => 1 ]; $ch = curl_init($api); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => $params, ]); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true); if ($data['code'] == 200) { echo "题目:{$data['q']}\n"; echo "A:{$data['a']}\n"; echo "B:{$data['b']}\n"; } else { echo "错误:{$data['msg']}\n"; }
5.2 提交 200 题答案(完整版)
<?php $answers = implode(',', array_fill(0, 200, 'A')); // 示例:200 题全选 A $params = [ 'id' => '你的ID', 'key' => '你的KEY', 'type' => 2, 'version' => 3, 'qcan' => $answers ]; $ch = curl_init('https://接口盒子/api/mingli/mbti.php'); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => $params, ]); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true); echo $data['code'] == 200 ? "你的人格类型是:{$data['mbti']}\n" : "错误:{$data['msg']}\n";
六、Python 调用示例
6.1 获取第 1 题(requests)
import requests api = "https://接口盒子/api/mingli/mbti.php" params = { "id": "你的ID", "key": "你的KEY", "type": 1, "version": 3, "num": 1 } r = requests.post(api, data=params) data = r.json() if data["code"] == 200: print("题目:", data["q"]) print("A:", data["a"]) print("B:", data["b"]) else: print("错误:", data["msg"])
6.2 提交 200 题答案
import requests answers = ",".join(["A"] * 100 + ["B"] * 100) payload = { "id": "你的ID", "key": "你的KEY", "type": 2, "version": 3, "qcan": answers } r = requests.post("https://接口盒子/api/mingli/mbti.php", data=payload) data = r.json() if data["code"] == 200: print("你的人格类型:", data["mbti"]) else: print("错误:", data["msg"])
七、使用注意事项
- version 与题数必须对应:48 / 93 / 200,提交时
qcan的逗号分隔项数不能错,否则逻辑会乱。 - qcan 只能出现 A 或 B,用英文逗号分隔,不要带空格。
- 获取题目时
num是逐题拉取的(不是一次返回全部 200 题),前端需要自己维护题号循环。 - 返回
mbti字段只给 4 字母代号(如INFJ),想展示人格解读可以:
- 自行维护一份 16 型映射表;
- 或调用该站点的「人格类型解释查询接口」(参考文末原站链接)。
- 生产环境务必用 POST,GET 会把 ID / KEY 暴露在 URL 和日志里。