NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
# 自定义解析接口 --- 使用内置接口将使用程序自带的解析接口,不过支持的平台很少,后面陆续更新 使用第三方接口需要到后端代码中修改,其文件路径是source/application/api/controller/Apis.php文件 ![](https://img.kancloud.cn/6f/c5/6fc519e46ab174efa7231122a7eacb56_1920x902.webp) 填写接口后请自行解析接口返回的信息,并用以下格式返回给小程序 ![](https://img.kancloud.cn/e0/3a/e03a7d66c1f63a705a01ec31f552f3d7_931x470.webp) ![](https://img.kancloud.cn/35/75/35753b67661f1e796e1b069959ed5e28_950x594.webp) ``` return [ "code" => 200, // 200表示解析成功 -1 表示失败 "data" => [ "title" => "这里是分享文案", "cover" => "这里是封面图片链接", "images" => [], // 这里是图集的数组 "video" => "这里是视频链接", ], "msg" => "解析成功" ]; ``` ## 【下面提供一个案例模板】 比如我对接一个接口,然后请求返回的格式是下图这样的 ![](https://img.kancloud.cn/b9/83/b98371efaec6dc612e73f5b55bd42c65_1330x373.webp) 只要将data里面的数据取出来再存放就可以了,可看下面的下面的代码样例 ~~~ public function analysis($videoUrl) { try { $url = "https://解析接口/Analyse?url=" . $videoUrl; $s = file_get_contents($url); $s = json_decode($s, true); // 这个接口返回的状态码code 200表示解析成功 if ($s['code'] == '200') { // 直接取返回数据中的data值再赋值给s,相当于s就是data $s = $s['data']; $reData = [ "title" => $s['title'], // 将分享文案存入 reData "cover" => $s['cover'], // 将封面链接存入 "video" => $this->getUrl302($s['url']), // 将data中的视频链接存入,某些视频链接需要302跳转拿到真实链接才可以在小程序下载 ]; // 如果你的解析接口可以解析图集,可再修改下面的代码 // 如果这个接口返回的type 等于image则表示正在解析图集链接返回的数据 // if ($s['type'] == 'image') { // 存入图集 // $reData['images'] = $s['pics']; // } else { // 拿到真实链接并存入视频链接 // $reData['video'] = $this->getUrl302($s['url']); // } // 这里返回新的格式过去就可以了 return [ "code" => 200, "data" => $reData, // reData 就是上面设置存入的数据 "msg" => "解析成功" ]; } else { return [ "code" => -1, "data" => null, "msg" => $s['message'] ]; } } catch (\Exception $e) { return [ "code" => -1, "data" => null, "msg" => "解析失败,出错了" ]; } } ~~~ ## 【上面那些看不懂的话再提供一个案例模板】 ~~~ public function analysis($videoUrl) { $data = [ // 解析接口 'url' => 'http://apis.xiaofanmo.site/home/api?uid=这里填写UID&key=这里填写KEY&url=' . $videoUrl, // 接口返回提示信息 'msg' => 'msg', // 文案 'title' => 'desc', // 封面 'cover' => 'cover', // 图集 'images' => 'pics', // 视频 'video' => 'playAddr', ]; try { $url = $data['url']; $s = file_get_contents($url); $s = json_decode($s, true); $whole = $s; // 这个接口返回的状态码code 0001表示解析成功 if ($s['code'] == '0001') { // 判断解析返回接口的数据是否在 data 里面 if (!empty($s['data'])) { $s = $s['data']; } // 定义新的数据格式 $reData = [ "title" => $s[$data['title']], // 将分享文案存入 reData "cover" => $s[$data['cover']] // 将封面链接存入 ]; // 判断当前是否在解析视频 if (empty($s[$data['images']]) || $s[$data['images']] == "" || $s[$data['images']] == null) { // 拿到真实链接并存入视频链接 $reData['video'] = $this->getUrl302($s[$data['video']]); } else { // 存入图集 $reData['images'] = $s[$data['images']]; } // 这里返回新的格式过去就可以了 return [ "code" => 200, "data" => $reData, // reData 就是上面设置存入的数据 "msg" => "解析成功" ]; } else { return [ "code" => -1, "data" => null, "msg" => $whole[$data['msg']] ]; } } catch (\Exception $e) { return [ "code" => -1, "data" => null, "msg" => "解析失败,出错了" ]; } } ~~~