#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 class="brush:php;toolbar:false">";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 中国語 Web サイトの他の関連記事を参照してください。