用Drupal快速实现mobile平台服务端【转】
原文地址: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 => '非法的请求动作',
API_ERRORNO_INVALID_PARAM => '非法的请求参数',
API_ERRORNO_NO_RECORD => '查找不到数据',
API_ERRORNO_INVALID_NAME => '非法的手机号码',
API_ERRORNO_USER_BLOCKED => '当前用户已经被禁用',
API_ERRORNO_LOGIN_FAILED => '登陆失败',
);
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平台服务端【转】的更多相关文章
- 快速理解高性能HTTP服务端的负载均衡技术原理(转)
1.前言 在一个典型的高并发.大用户量的Web互联网系统的架构设计中,对HTTP集群的负载均衡设计是作为高性能系统优化环节中必不可少的方案.HTTP负载均衡的本质上是将Web用户流量进行均衡减压,因此 ...
- 推荐:让你快速搞定各服务端(api,pc,mobile,wechat)代码
如果你在写服务端 (PHP) ,会因为项目须求(做app.pc.mobiel.微信) 而写几套代码的,你不觉得很累吗? 现在的很多开源框架商用版本在做程序方面都是这么一套一套的,维护起来,二开起来特别 ...
- 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 ...
- 基于supersocket、C#对JT808协议进行解析构建gps监控平台服务端
GPS监控平台.车联网.物联网系统中GPRS网络数据的并发通讯和处理解析,主要功能有socket的UDP和TCP链路建立和维持,网络数据协议包接收与解析,分发上传到其他业务规则服务器,在物联网以及位置 ...
- 适合新手:从零开发一个IM服务端(基于Netty,有完整源码)
本文由“yuanrw”分享,博客:juejin.im/user/5cefab8451882510eb758606,收录时内容有改动和修订. 0.引言 站长提示:本文适合IM新手阅读,但最好有一定的网络 ...
- Netty源码分析之服务端启动过程
一.首先来看一段服务端的示例代码: public class NettyTestServer { public void bind(int port) throws Exception{ EventL ...
- 基于 xorm 的服务端框架 XGoServer
作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...
- React 16 服务端渲染的新特性
React 16 服务端渲染的新特性 React 16 中关于服务端渲染的新特性 快速介绍React 16 服务端渲染的新特性,包括数组.性能.流等 React 16 终于来了!
- win7设置docker默认服务端地址
目录 win7设置docker默认服务端地址 1.开启docker远程访问 2.本地调整 2.1 docker.exe重命名 2.2 添加docker.bat 2.3 添加快速切换功能 3.使用验证 ...
随机推荐
- Java高级架构师(一)第40节:更多模块的基本功能和配置
- myBatis 切换数据源(spring事务)理解
1. mybatis (SqlSessionTemplate)的动态代理 a) sqlSession的结构 b)SqlSession 结构 public class SqlSessionTemplat ...
- 浅谈JVM-类加载器结构与双亲委派机制
一.类加载器结构 1.引导类加载器(bootstrap class loader) 它用来加载Java的核心库(JAVA_HOME/jre/lib/rt.jar),是用原声代码来实现的,并不继承自ja ...
- Linux操作系统的种种集成开发环境
Linux操作系统的种种集成开发环境 随着Linux的逐渐兴起,已经有为数众多的程序在上面驰骋了,许多开发环境(Development Environment)也应运而生.好的开发环境一定是集成了编辑 ...
- Go:Hello World!
备注 结束了一周紧张的工作,周末像品茶一样玩味一下Go,本文主要记录学习Go的经历. Go是什么? 官方网站:http://golang.org/. 在Windows下安装Go 官方教程:http:/ ...
- ARC中的@autoreleasepool还有作用吗?
ARC中的@autoreleasepool还有作用吗? QUESTION For the most part with ARC (Automatic Reference Counting), we d ...
- FFMPEG类库打开流媒体的方法(传参数)
使用ffmpeg类库进行开发的时候,打开流媒体(或本地文件)的函数是avformat_open_input(). 其中打开网络流的话,前面要加上函数avformat_network_init(). 一 ...
- WPF性能调试系列 – 内存监测
WPF性能调试系列文章: WPF页面渲染优化:Application Timeline WPF页面业务加载优化:Ants Performance Profiler WPF内存优化:Ants M ...
- JS是否存在方法重载
java里面是存在重载的,那么js中呢?这个问题面试的时候会经常遇到.但是可以肯定的说,js中是不存在重载的,但是我们可以通过其他的方式来模拟重载,我们可以通过argument方法来实现. argum ...
- Microsoft Visual C++ 6.0预处理器参考手册
返回总目录 Microsoft Visual C++ 6.0 预处理器参考手册 目录引言........................................................ ...