时间:2021-07-01 10:21:17 帮助过:10人阅读
php后台接口的实现方法
1. 首先,要设置一个入口文件
入口文件的话会引入到固定的api文件(如下):
- <?php
- define("APPAPI_ALLOW_REQUEST_LOGIN", 'Y');
- //是否允许传用户名密码参数的形式登录。如为Y则参数用户名密码参数和basic方式都可以,如为N就只能basic方式。
- //define("SITE_TEMPLATE_PATH", '/local/templates/mobile_app_api');
- //如不定义,默认是local/templates/bitrix24。可以考虑将/local/templates/mobile_app留给h5前端展示用。
- 新开/local/templates/mobile_app_api给api用。如不指定SITE_TEMPLATE_PATH直接IncludeComponent,则对组件代码进行debug时,
- 会出现web端头部页面。
- //require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/header.php'); //需要模板页面
- Header('Access-Control-Allow-Origin: *');
- Header('Access-Control-Allow-Headers: origin, content-type, accept');
- Header('X-Content-Type-Options: nosniff');
- require("remote_auth.php");
- //app方式每次请求session_id()都会变,导致挂钩在session_id()下面的所有session信息如fix_session_id也都不认。
- 所以登录完毕后要拿到session_id(),并在后续接口一起传给接口,接口再去指定session_id。
- //$_REQUEST['org_sessid']='06q75330o31se1cf4d7vl1bdm4';
- if(!empty($_REQUEST['org_sessid'])){
- $org_session_id=$_REQUEST['org_sessid'];
- session_id($org_session_id);
- session_start();
- //echo session_id();
- //echo "<pre>";print_r($_SESSION);exit;
- }
- require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"); //无需模板页面
- $APPLICATION->IncludeComponent("vdg:mobile.data", "", Array());
- exit;
- ?>
2. 其次,在引入的组件的component.php中获取参数,确定模板的使用
- <?php
- ...
- include_once(dirname(__FILE__) . "/functions.php");//引入类的方法的文件
- ...
- if ($_REQUEST["mobile_action"])//Executing some action
- {
- $APPLICATION->RestartBuffer();
- $action = $_REQUEST["mobile_action"];
- //CRestUtil::sendHeaders(); //跨域header
- $actionList = new Bitrix\Mobile\Action();
- $actionList->executeAction($action, $arParams);
- CMain::FinalActions();
- die();
- }
- elseif ($_REQUEST["captcha_sid"])//getting captcha image 通过 /vdg/app_api.php?captcha_sid=1 可以得到图形验证码。
- {
- $APPLICATION->RestartBuffer();
- $actionList = new Bitrix\Mobile\Action();
- $actionList->executeAction("get_captcha", $arParams);
- die();
- }
- elseif ($_REQUEST["manifest_id"])//getting content of appcache manifest
- {
- include($_SERVER["DOCUMENT_ROOT"] .\Bitrix\Main\Data\AppCacheManifest::MANIFEST_CHECK_FILE);
- die();
- }
- elseif(!$USER->IsAuthorized() || !$isSessidValid)
- {
- $APPLICATION->RestartBuffer();
- header("HTTP/1.0 401 Not Authorized");
- if(Bitrix\MobileApp\Mobile::getInstance()->getInstance() != "android")
- {
- //header("Content-Type: application/x-javascript");
- header("Content-Type: application/json");
- header("BX-Authorize: ".bitrix_sessid());
- }
- jsonError('201', '请先登陆');
- //echo json_encode(Array("status" => "failed", "bitrix_sessid"=>bitrix_sessid()));
- die();
- }
- ?>
3.在具体的模板中运用类的方法根据参数获取相应的数据,并返回客户端结果
如果成果返回“ jsonSuccess(questions);”如果失败返回“jsonError(′201′,questions);”
如果失败返回“jsonError(′201′,questRes[“ERROR”]);”或其他错误讯息。
推荐教程:PHP视频教程
以上就是PHP后端接口怎么写的详细内容,更多请关注Gxl网其它相关文章!