当前位置:Gxlcms > PHP教程 > PHP后端接口怎么写

PHP后端接口怎么写

时间:2021-07-01 10:21:17 帮助过:10人阅读

php后台接口的实现方法

1. 首先,要设置一个入口文件

入口文件的话会引入到固定的api文件(如下):

  1. <?php
  2. define("APPAPI_ALLOW_REQUEST_LOGIN", 'Y');
  3. //是否允许传用户名密码参数的形式登录。如为Y则参数用户名密码参数和basic方式都可以,如为N就只能basic方式。
  4. //define("SITE_TEMPLATE_PATH", '/local/templates/mobile_app_api');
  5. //如不定义,默认是local/templates/bitrix24。可以考虑将/local/templates/mobile_app留给h5前端展示用。
  6. 新开/local/templates/mobile_app_api给api用。如不指定SITE_TEMPLATE_PATH直接IncludeComponent,则对组件代码进行debug时,
  7. 会出现web端头部页面。
  8. //require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/header.php'); //需要模板页面
  9. Header('Access-Control-Allow-Origin: *');
  10. Header('Access-Control-Allow-Headers: origin, content-type, accept');
  11. Header('X-Content-Type-Options: nosniff');
  12. require("remote_auth.php");
  13. //app方式每次请求session_id()都会变,导致挂钩在session_id()下面的所有session信息如fix_session_id也都不认。
  14. 所以登录完毕后要拿到session_id(),并在后续接口一起传给接口,接口再去指定session_id。
  15. //$_REQUEST['org_sessid']='06q75330o31se1cf4d7vl1bdm4';
  16. if(!empty($_REQUEST['org_sessid'])){
  17. $org_session_id=$_REQUEST['org_sessid'];
  18. session_id($org_session_id);
  19. session_start();
  20. //echo session_id();
  21. //echo "<pre>";print_r($_SESSION);exit;
  22. }
  23. require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"); //无需模板页面
  24. $APPLICATION->IncludeComponent("vdg:mobile.data", "", Array());
  25. exit;
  26. ?>

2. 其次,在引入的组件的component.php中获取参数,确定模板的使用

  1. <?php
  2. ...
  3. include_once(dirname(__FILE__) . "/functions.php");//引入类的方法的文件
  4. ...
  5. if ($_REQUEST["mobile_action"])//Executing some action
  6. {
  7. $APPLICATION->RestartBuffer();
  8. $action = $_REQUEST["mobile_action"];
  9. //CRestUtil::sendHeaders(); //跨域header
  10. $actionList = new Bitrix\Mobile\Action();
  11. $actionList->executeAction($action, $arParams);
  12. CMain::FinalActions();
  13. die();
  14. }
  15. elseif ($_REQUEST["captcha_sid"])//getting captcha image 通过 /vdg/app_api.php?captcha_sid=1 可以得到图形验证码。
  16. {
  17. $APPLICATION->RestartBuffer();
  18. $actionList = new Bitrix\Mobile\Action();
  19. $actionList->executeAction("get_captcha", $arParams);
  20. die();
  21. }
  22. elseif ($_REQUEST["manifest_id"])//getting content of appcache manifest
  23. {
  24. include($_SERVER["DOCUMENT_ROOT"] .\Bitrix\Main\Data\AppCacheManifest::MANIFEST_CHECK_FILE);
  25. die();
  26. }
  27. elseif(!$USER->IsAuthorized() || !$isSessidValid)
  28. {
  29. $APPLICATION->RestartBuffer();
  30. header("HTTP/1.0 401 Not Authorized");
  31. if(Bitrix\MobileApp\Mobile::getInstance()->getInstance() != "android")
  32. {
  33. //header("Content-Type: application/x-javascript");
  34. header("Content-Type: application/json");
  35. header("BX-Authorize: ".bitrix_sessid());
  36. }
  37. jsonError('201', '请先登陆');
  38. //echo json_encode(Array("status" => "failed", "bitrix_sessid"=>bitrix_sessid()));
  39. die();
  40. }
  41. ?>

3.在具体的模板中运用类的方法根据参数获取相应的数据,并返回客户端结果

如果成果返回“ jsonSuccess(questions);”如果失败返回“jsonError(′201′,questions);”

如果失败返回“jsonError(′201′,questRes[“ERROR”]);”或其他错误讯息。

推荐教程:PHP视频教程

以上就是PHP后端接口怎么写的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行