当前位置: 首页 > news >正文

dokuwiki jsonRPC教程

dokuwiki jsonRPC教程

相当于把dokuwiki当成作品数据库进行远程API查询(适用于开发网站)

管理->配置设置->

image

 参考代码

<?php
# 此文件需要放在/dokuwiki目录下
// 定义允许的源列表
$allowed_origins = ['http://127.0.0.1:8000',
];// 获取请求的 Origin 头
if (isset($_SERVER['HTTP_ORIGIN']) && in_array($_SERVER['HTTP_ORIGIN'], $allowed_origins)) {header("Access-Control-Allow-Origin: " . $_SERVER['HTTP_ORIGIN']);header("Access-Control-Allow-Credentials: true"); // 如果需要携带 cookie 等凭证
} else {// 可选的:如果不允许的来源,返回 403 或直接拒绝// header('HTTP/1.1 403 Forbidden');// exit;
}// 处理预检请求(OPTIONS)
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {// 允许的请求方法header("Access-Control-Allow-Methods: POST, GET, OPTIONS");// 允许的请求头(根据你的实际请求调整)header("Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With");// 预检请求直接返回 200http_response_code(200);exit();
}header("Content-Type: application/json");
define("jsonrpc", "http://113.31.112.140/dokuwiki/lib/exe/jsonrpc.php");
if($_SERVER["REQUEST_METHOD"] == "POST")
{$action = $_POST['action'];switch ($action) {case 'search':search();break;case 'get_page':get_page();break;default:echo "error";break;}
}
function search()
{$payload = ["jsonrpc" => "2.0","method" => "core.searchPages", "params" => ["query" => $_POST['query']]];$ch = curl_init(jsonrpc);// 设置选项curl_setopt($ch, CURLOPT_POST, true);  // POST 请求curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload)); // POST 数据
        curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json','Content-Length: ' . strlen(json_encode($payload))]);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回结果而不是直接输出curl_setopt($ch, CURLOPT_TIMEOUT, 30); // 超时时间(秒)// 执行请求$response = curl_exec($ch);// 检查错误if (curl_errno($ch)) {echo 'cURL 错误: ' . curl_error($ch);} else {// 解析响应(假设返回 JSON)$data = json_decode($response, true);echo json_encode($data['result']);}// 关闭会话
        curl_close($ch);
}
function get_page()
{// $payload = [//     "jsonrpc" => "2.0",//     "method" => "wiki.getPage", // todo: 改成core.getPageHTML//     "params" => [$_POST['query']]// ];$payload = ["jsonrpc" => "2.0","method" => "core.getPageHTML", // todo: 改成core.getPageHTML"params" => ["page" => $_POST['query']]];$ch = curl_init(jsonrpc);// 设置选项curl_setopt($ch, CURLOPT_POST, true);  // POST 请求curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload)); // POST 数据
        curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json','Content-Length: ' . strlen(json_encode($payload))]);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回结果而不是直接输出curl_setopt($ch, CURLOPT_TIMEOUT, 30); // 超时时间(秒)// 执行请求$response = curl_exec($ch);// 检查错误if (curl_errno($ch)) {echo 'cURL 错误: ' . curl_error($ch);} else {// 解析响应(假设返回 JSON)$data = json_decode($response, true);echo $data['result'];}// 关闭会话
        curl_close($ch);
}
?>

 

http://www.jsqmd.com/news/405636/

相关文章:

  • JavaSE基础-Java字符串转整数与拼接实战指南
  • 【2026最新】Escrcpy下载安装全攻略:大屏操控安卓手机必备工具 - xiema
  • 基于Python+Web的公务员信息查询系统
  • 信用卡逾期别慌!10家正规机构助你轻松化解债务压力 - 代码非世界
  • 2026四川债务协商机构推荐榜:信用卡优化必看这份避坑指南 - 代码非世界
  • 大学生必备8款免费AI论文工具:知网维普查重一把过,无AIGC痕迹 - 麟书学长
  • 2026四川债务协商机构推荐榜:信用卡逾期这样解决更轻松 - 代码非世界
  • G001 强连通分量 Tarjan算法 P2812 [USACO]Network of Schools 校园网络
  • Exadata的思科交换机,重启后进入到了rommon模式
  • 【实证分析】地市城乡融合发展数据集-含代码(2007-2023年)
  • 突破3D生成瓶颈:Dora-VAE如何通过重要性采样实现高保真重建
  • Python write 100M items data to csv file in batch
  • 2026山东债务协商服务优质机构推荐(负债人亲历实测,正规上岸指南) - 代码非世界
  • 2026冲刺用!AI论文平台 千笔·专业学术智能体 VS 锐智 AI,自考写作更高效!
  • 信用卡委托协商机构山东债务协商实战经验分享,真实案例解压指南 - 代码非世界
  • 2026年市面上有实力的汽车零件超声波清洗机源头厂家哪家靠谱,刻蚀机/液压阀体清洗机,汽车零件超声波清洗机生产厂家排名 - 品牌推荐师
  • 2026山东债务协商服务优质机构推荐:专业团队助您重掌财务主动权 - 代码非世界
  • 2026年2月最新发布:广州AI获客公司实力榜单,谁在领跑“自动化增长”? - 野榜精选
  • 2026最新!9个降AI率网站测评:专科生降AIGC必备工具全解析
  • 写作压力小了!10个降AIGC软件测评:自考降AI率必备工具推荐
  • 2026更新版!AI论文工具 千笔写作工具 VS speedai,本科生专属高效写作神器!
  • 科研党收藏!一键生成论文工具,千笔 VS 文途AI,专科生专属
  • 2026北京信用卡协商TOP5实测|负债党亲测避坑,专业度+口碑双在线,上岸少走弯路 - 代码非世界
  • 【学习笔记】珂朵莉树/颜色段均摊
  • 小红统计区间(easy)【牛客tracker 每日一题】
  • 2026北京信用卡协商TOP5机构实测:专业能力与口碑如何选? - 代码非世界
  • [AI提效-27]-2026年AI多媒体生成工具全景对比指南
  • [AI提效-26]-2026年多媒体创作工具全景指南
  • MATLAB代码:基于两阶段鲁棒优化算法的多微网联合调度及容量配置 关键词:多微网 优化调度 ...
  • 编译生成方法二:手动写cmake脚本