app接口的简单案例 和一些总结
常用的接口形式(即下面的 例二):
开发语言为PHP,数据格式为Json,传输协议为http,提交数据为Post方式,字符编码均使用utf-8
(客户端)数据的提交:
php 通过CURL 发送http的post请求 http://www.cnblogs.com/wangyuman26/p/5545370.html
(服务端)数据的接收:
$data=file_get_contents("php://input"); //获取输入的数据流
$jsonArray = json_decode($data, true); //将获得的数据进行对象序列化,返回array
(服务端)数据的返回:
echo json_encode($array);
例一:
通过接口获取一篇文章。
接口需要传入文章的id,通过sql语句向数据库查询文章的内容,然后以json的格式echo出即可,
即:安卓或IOS工程师获取通过接口获取到了json格式的数据,在做进一步的处理,显示在手机上。
说明:开发语言为PHP,数据格式为Json,传输协议为http,提交数据为Get方式,字符编码均使用utf-8。

例二:
开发语言为PHP,数据格式为Json,传输协议为http,提交数据为Post方式,字符编码均使用utf-8。
说明:①设置接口接口返回值编码 header("Content-type:text/plain;charset=UTF-8");
②因为为Post方式提交数据,所以提交数据可以使用Json的格式,如:
data='{
"serviceName": "login",
"queryParameters": {
"password": "123456",
"mobile": "xxxxxxxxxx"
}
}'
IndexController.class.php
class IndexController extends Controller {
public function index(){
header("Content-type:text/plain;charset=UTF-8");
$index = new IndexService();
$array = $index->index();
echo json_encode($array);
}
} IndexService.class.php
class IndexService {
public function index(){
$array['status'] = 1;
$array['comment'] = '参数不全!';
try{
$data=file_get_contents("php://input"); //获取输入的数据流
$jsonArray = json_decode($data); //将获得的数据进行对象序列化。
$serviceName = $jsonArray->serviceName;
$param = $jsonArray->queryParameters;
/***********************************************************************************/
switch($serviceName){
case 'login':
$member = new MemberService();
$array = $member->login($param);
break;
case 'orderDetail':
$order = new OrderService();
$array = $order->orderDetail($param);
break;
//……………………
}
/*************************************************************************************/
}catch (Exception $ex){
$array['status'] = 1;
$array['comment'] = '程序错误:'.$ex->getMessage();
}
return $array;
}
} OrderService.class.php
class OrderService { //订单详情。
public function orderDetail($param){
$orderId = $param->orderid;
$order = M('Order');
$map['id'] = $orderId+0;
$rs = $order->where($map)->find();
$array['status'] = 1;
$array['comment'] = '未查到数据!';
if($rs){
$rs['crosscity'] = $this->crossCity($rs['id']);
$array['status'] = 0;
$array['data'] = $rs;
$array['comment'] = '查询成功!';
}
return $array;
} }
接口说明文档(范文1):
开发者 版本 说明 日期
XXX 1.0 原始开发 XXX
说明
本接口供休息休息项目中Android+IOS上的APP调用,开发语言为PHP,数据格式为Json,传输协议为http,提交数据为Post方式,字符编码均使用utf-8。
接口地址
http://xxxxxx.com
一:获取用户资料 memberInfo
提交数据:
{
"serviceName": "memberInfo",
"queryParameters": {
"userid": "xx"
}
}
参数说明:
参数 必填 类型 说明
serviceName 是 varchar 指令:memberInfo
queryParameters 是 数组
userid 是 int 会员id
返回数据:
{
"status": "0",
"comment": "成功获取个人信息",
"responseParameters": {
"id": "21",
"companyid": "5"
………………
}
}
参数说明 :
参数 类型 说明
status Int 返回状态:
0成功
1错误原因1
2错误原因2
comment Varchar 注释
项目中的总结:
1:接口的返回值中的数据,最好同意都是字符串类型,方便IOS和安卓开发人员的处理。
{
"status": , //这个可以不是字符串
"comment": "发送成功...",
"data": { //里面的最好都是字符串类型
"id": "22",
"verify-phone": "1316113129X",
"verify-code": "644115"
}
}
即:变量都为字符串类型,有引号包着。或者使用类型转换函数strval(),转换为字符串类型。
2:设置接口返回值的编码
使用header函数
在控制器或页面里面header("content-type:text/html; charset=utf-8");
3:安全性
①需要有一个加密规则
即每次请求接口,需要根据规则加密一段字符串,接口那边也根据规则加密一段字符串,判断与接收的字符串是否一致,如果一致允许本次的请求。
规则比如可以是:md5(“项目简称”+“请求接口的名称”+“固定的几个字母”)
②接收的参数为整型时,要做强制转化为整型处理
③接收的参数为字符串时,要做处理
4:要考虑低版本的兼容
-1、版本更新后,要考虑对低版本的功能是否有影响
//版本升级:新添加的参数 (逻辑层需要新增参数,加默认值来兼容旧版本。)
$new_driverid = isset($param->new_driverid) ? intval($param->new_driverid) : -1;
app接口的简单案例 和一些总结的更多相关文章
- python——flask常见接口开发(简单案例)
python——flask常见接口开发(简单案例)原创 大蛇王 发布于2019-01-24 11:34:06 阅读数 5208 收藏展开 版本:python3.5+ 模块:flask 目标:开发一个只 ...
- SpringBoot基础学习(一) SpringBoot概念、简单案例实现、单元测试及热部署讲解
SpringBoot概念 Spring优缺点分析 Spring优点 Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品,无需开发重量级的 ...
- APP接口版本兼容的问题
现在基本每个公司都做APP,所以大家都面临 APP接口版本兼容的问题. iOS和android 要不断开发新版本,很多服务端开发都是在以前接口的逻辑上进行修改.新的APP和接口开发后,接口如何兼容老的 ...
- winform 通过 html 与swf 交互 简单案例
在上一篇 winform 与 html 交互 简单案例 中讲了winform与html之间的简单交互,接下来的内容是在winform中以html为中转站,实现将swf嵌入winform中并实现交互. ...
- [Design Pattern] Observer Pattern 简单案例
Observer Pattern,即观察者模式,当存在一对多关系,例如一个对象一有变动,就要自动通知被依赖的全部对象得场景,属于行为类的设计模式. 下面是一个观察者模式的简单案例. Observer ...
- [Design Pattern] Iterator Pattern 简单案例
Iterator Pattern,即迭代时模式,按照顺序依次遍历集合内的每一个元素,而不用了解集合的底层实现,属于行为类的设计模式.为了方便理解记忆,我也会称其为遍历模式. 下面是一个迭代器模式的简单 ...
- [Design Pattern] Command Pattern 简单案例
Command Pattern, 即命令模式,把一个命令包裹在一个对象里面,将命令对象传递给命令的执行方,属于行为类的设计模式 下面是命令模式的一个简单案例. Stock 代表被操作的对象.Order ...
- [Design Pattern] Proxy Pattern 简单案例
Proxy Pattern, 即代理模式,用一个类代表另一个类的功能,用于隐藏.解耦真正提供功能的类,属于结构类的设计模式. 下面是 代理模式的一个简单案例. Image 定义接口,RealImage ...
- [Design Pattern] Flywight Pattern 简单案例
Flywight Pattern, 即享元模式,用于减少对象的创建,降低内存的占用,属于结构类的设计模式.根据名字,我也将其会理解为 轻量模式. 下面是享元模式的一个简单案例. 享元模式,主要是重用已 ...
随机推荐
- MySQL 1045登录失败
当你登录MySQL数据库出现:Error 1045错误时(如下图),就表明你输入的用户名或密码错误被拒绝访问了,最简单的解决方法就是将MySQL数据库卸载然后重装,但这样的缺点就是就以前的数据库中的信 ...
- bzoj4403: 序列统计
我们很容易发现答案是C(R-L+N+1,N)-1 然后用一下lucas定理就行了 #include <iostream> #include <cstdio> #include ...
- sbin/hadoop-daemon.sh: line 165: /tmp/hadoop-hxsyl-journalnode.pid: Permission denied
原来在logs下 该权限,还是不行,以root登陆可以了,但是其他节点是普通用户啊,还会出其他问题,仔细看是/tmp,就是linux根目录下的tmp,改他的权限吧,不知道重启会不会变化.
- PowerDesigner中Table视图同时显示Code和Name
如题,实现如下的效果: 解决方法: 1.Tools-Display Preference 然后选中Code移到最上面
- MyCCL特征码定位原理学习
这段时间学习WEB方面的技术,遇到了木马免杀特征码定位的问题,这里做一下学习笔记. 这里对MyCCL的分块原理做一下探究 对指定文件生成10个切块 对指定的木马进行切块后,文件列表是这样的. 注意这里 ...
- TCP/IP详解 笔记十四
TCP/IP协议(二) 连接的建立与终止 tcpdump -S输出TCP报文的格式 格式: 源>目的:标志 (标志就是tcp头部).标识首字符意义如下: 例如:telnet 某服务的输出(包括 ...
- 64位CentOS源码编译方式安装wine
说明:本文仅作本人笔记的之用,仅供参考.可能因不同环境而不同. 1. 从官网下载最新版的wine-1.6.2.tar.gz 2. 安装相关的包(这里是我安装的,可能由于不同系统已经安装的包不同而不一样 ...
- CF 405C Unusual Product(想法题)
题目链接: 传送门 Domino Effect time limit per test:1 second memory limit per test:256 megabytes Descrip ...
- Distance Between Points
I need some help. I have to create a function that will calculate the distance between points (x1,y1 ...
- hdu 2042 - 不容易系列之二
题意:(略)太长了 解法:找规律,发现A[i]=A[i-1]*2-2; 1: #include<stdlib.h> 2: #include<string.h> 3: #incl ...