原文地址:http://www.terrysco.com/node/drupal-as-mobile-backend.html

用Drupal很容易实现一个API,让手机平台或者其他系统使用json的格式进行通信。

<?php
define('API_ERRORNO_INVALID_ACTION', 1);
define('API_ERRORNO_INVALID_PARAM', 2);
define('API_ERRORNO_NO_RECORD', 3);
define('API_ERRORNO_INVALID_NAME', 4);
define('API_ERRORNO_USER_BLOCKED', 5);
define('API_ERRORNO_LOGIN_FAILED', 6); // 根据错误代码返回错误信息
function api_message_wrapper($errno) {
$message = array(
API_ERRORNO_INVALID_ACTION =&gt; '非法的请求动作',
API_ERRORNO_INVALID_PARAM =&gt; '非法的请求参数',
API_ERRORNO_NO_RECORD =&gt; '查找不到数据',
API_ERRORNO_INVALID_NAME =&gt; '非法的手机号码',
API_ERRORNO_USER_BLOCKED =&gt; '当前用户已经被禁用',
API_ERRORNO_LOGIN_FAILED =&gt; '登陆失败',
);
return isset($message[$errno]) ? $message[$errno] : '未知的错误';
} // 验证合法的action
function api_action_route($action) {
$valid_actions = array(
'login' => 'login',
'register' => 'register',
'getCardInfos' => 'get_card_info',
);
return isset($valid_actions[$action]) ? $valid_actions[$action] : false;
} function api_menu() {
$items['api'] = array(
'page callback' => 'api_dispatch',
'access callback' => TRUE,
//'access arguments' => array('使用API'),
'type' => MENU_CALLBACK,
'file' => 'api.functions.inc',
);
return $items;
} // 成功返回
function api_response_sucess($data) {
drupal_json(array('ERRNO' => 0, 'DATA' => $data));
} // 失败返回
function api_response_error($errno) {
if ($errno && is_numeric($errno)) {
drupal_json(array(
'ERRNO' => $errno,
'MSG' => api_message_wrapper($errno),
));
}
} // API调度入口
function api_dispatch() {
if (!isset($_POST['ACTION']) || !api_action_route($_POST['ACTION'])) {
api_response_error(API_ERRORNO_INVALID_ACTION);
}
elseif (!isset($_POST['PARAM'])) {
api_response_error(API_ERRORNO_INVALID_PARAM);
}
else {
$param = json_decode($_POST['PARAM']);
call_user_func('api_call_'. api_action_route($_POST['ACTION']), $param);
}
}

适用方法:
http://localhost/drupal/index.php?q=api
http://localhost/drupal/api

用Drupal快速实现mobile平台服务端【转】的更多相关文章

  1. 快速理解高性能HTTP服务端的负载均衡技术原理(转)

    1.前言 在一个典型的高并发.大用户量的Web互联网系统的架构设计中,对HTTP集群的负载均衡设计是作为高性能系统优化环节中必不可少的方案.HTTP负载均衡的本质上是将Web用户流量进行均衡减压,因此 ...

  2. 推荐:让你快速搞定各服务端(api,pc,mobile,wechat)代码

    如果你在写服务端 (PHP) ,会因为项目须求(做app.pc.mobiel.微信) 而写几套代码的,你不觉得很累吗? 现在的很多开源框架商用版本在做程序方面都是这么一套一套的,维护起来,二开起来特别 ...

  3. docker-compose 快速部署Prometheus之服务端并监控ceph cluster 使用钉钉webhook 报警

    现在环境是这样: ceph 4台: 192.168.100.21  ceph-node1 192.168.100.22  ceph-node2 192.168.100.23  ceph-node3 1 ...

  4. 基于supersocket、C#对JT808协议进行解析构建gps监控平台服务端

    GPS监控平台.车联网.物联网系统中GPRS网络数据的并发通讯和处理解析,主要功能有socket的UDP和TCP链路建立和维持,网络数据协议包接收与解析,分发上传到其他业务规则服务器,在物联网以及位置 ...

  5. 适合新手:从零开发一个IM服务端(基于Netty,有完整源码)

    本文由“yuanrw”分享,博客:juejin.im/user/5cefab8451882510eb758606,收录时内容有改动和修订. 0.引言 站长提示:本文适合IM新手阅读,但最好有一定的网络 ...

  6. Netty源码分析之服务端启动过程

    一.首先来看一段服务端的示例代码: public class NettyTestServer { public void bind(int port) throws Exception{ EventL ...

  7. 基于 xorm 的服务端框架 XGoServer

    作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...

  8. React 16 服务端渲染的新特性

    React 16 服务端渲染的新特性 React 16 中关于服务端渲染的新特性 快速介绍React 16 服务端渲染的新特性,包括数组.性能.流等 React 16 终于来了!

  9. win7设置docker默认服务端地址

    目录 win7设置docker默认服务端地址 1.开启docker远程访问 2.本地调整 2.1 docker.exe重命名 2.2 添加docker.bat 2.3 添加快速切换功能 3.使用验证 ...

随机推荐

  1. bzoj 1086 树分块

    将树分成一些块,做法见vfleaking博客. /************************************************************** Problem: 108 ...

  2. Unity 播放音频文件

    Unity 播放音频文件参考代码: public void Play(string strSoundName, float autoDestroyTime = 0f, bool bLoop = fal ...

  3. noip模拟 五子棋

    递推+模拟.在读取数据时,我们建4个图,分别代表这个图中横.纵.左斜右斜的连续长度.例如heng[i][j]代表ij这个点所在的横着一条线的长度. 然后搜索,对于一个空点,如果他的上下都>=4那 ...

  4. [转]Intent和PendingIntent的区别

    intent英文意思是意图,pending表示即将发生或来临的事情. PendingIntent这个类用于处理即将发生的事情.比如在通知Notification中用于跳转页面,但不是马上跳转. Int ...

  5. Linear regulator=low-cost dc/dc converter

    The circuit in Figure 1 is a good choice if you need a power supply with high efficiency and you don ...

  6. oracle linux 7.3 dtrace 安装

    [root@localhost dtrace]# uname -r -.el7uek.x86_64 [root@localhost dtrace]# cat /etc/oracle-release O ...

  7. linux创建swap分区

    创建交换分区 root@zabbix-server:~# mkdir /swap root@zabbix-server:~# cd /swap/ root@zabbix-server:/swap# l ...

  8. Oracle数据库常用函数使用--持续更新中

    NVL函数.NVL( string1, replace_with).如果string1为NULL,则NVL函数返回replace_with的值,否则返回原来的值. INSTR函数.用于查找指定字符串是 ...

  9. jQuery -&gt; filter使用方法

    利用filter函数能够从wrapper set中过滤符合条件的DOM元素. 假设我们有一个内容例如以下的html文件,要获取类为external的<a>元素,使用filter能够非常ea ...

  10. java 五子棋之人机对战思路详解

    最近做了五子棋,记录下自己完成五子棋的人机对战的思路. 首先,思路是这样的:每当人手动下一颗棋子(黑子)的时候,应当遍历它周围棋子的情况,并赋予周围棋子一定的权值,当在机器要下棋子(白子)守护之前,会 ...