当前位置: 首页 > news >正文

接口初探

引言:公司做的是iOS应用的,需要很多数据。数据一般通过接口来提供。

这里的接口不是java中的接口,或者PHP中的接口。接口宏观上讲很大,包含的内容很多,usb是接口,插座是接口。用到语言中,java中的Interface是接口。

提供数据传输,也是接口的一种。

 

接口的编写,要符合一定的标准,要规范,要测试。

一般通过json的格式来传递数据。

代码案例:

1.测试数据提交

复制代码
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"></head>
<body>
    <form action="http://local.ebookbag_demo2.com/api/iphone" method="post" >
        <input name="json" type="text" />
        <input type="submit"/>
    </form>
</body>
</html>
复制代码

以post的方式,将申请信息提交到服务器,一般是json的数据。

比如:{"reqCode":"bag00090","data":{"class_id":"7"}}

这就是json格式的数据,代号bag00090,信息,class_id

 

2.后台会接受到数据,并且提取出数据。

复制代码
$json = $_POST;
        //print_r(json_decode($json['json'],true));exit;
        if (array_key_exists('json', $json)) {
            $info = json_decode($json['json'], true);
        } else {
            echo "无请求参数,请输入请求参数!";
            die();
        }
复制代码

将json数据解析成数组信息。

3.参数解析

复制代码
//参数解析
        $str = '';
        if ($info["data"]) {
            foreach ($info["data"] as $key => $val) {
                $str.= "/" . $key . "/" . $val;
            }
        }
复制代码

参数都在data当中,将参数一一解析成浏览器能识别的参数。

 

4.跳转到相应的Action当中,执行动作

复制代码
//通过reqCode转入控制层
        switch ($info["reqCode"]) {
            case 'bag00001':
                //登陆接口(通过email、passwd) // version 1.1
                //请求//{"reqCode":"bag00001","data":{"number":"201","passwd":"b","position":"3"}} // position 1 学生  3 老师
                //响应{"redCode":"bag00001","status":"1","data":{"uid":"1"}}
                $this->_redirect("/api/user/login" . $str . "/reqCode/" . $info["reqCode"]);
                break;
.....
 case 'bag00090':
            // stocket 通过class_id,当前时间判断学生所在课堂ID
            //{"reqCode":"bag00090","data":{"class_id":"7"}}
            //响应  {"reqCode":"bag00090","status":"1","data":{"lessons_id":"2949"}}   {"reqCode":"bag00090","status":"2","data":"fail"} 
                $info = json_decode($json['json'], true);
                $this->_forward('socketbystulogin', 'lessons', 'api', $info);
       break;  
复制代码

刚才的bag00090就会
跳转到api下的lessons控制器中的socketbystulogin方法中,去执行相应的动作。

5.

复制代码
function socketbystuloginAction() {

        $reqCode = $this->_getParam('reqCode');
        $data = $this->_getParam('data');
        $daoLessons = new dao_lessons();
        //$time = time();//正式上线启用add by vinson 2013-04-23 
        $time = 1348703999;//调试用
        
        $where['lessons.class_id= ? '] = $data['class_id'];
        $where['lessons.endtime >?'] = $time;
        $order = " endtime ASC ";

        //print_r($where);
        $aLessons = $daoLessons->getlessons($where, $order, 1, 0, false, false, false, 0);
        //print_r($aLessons);

        if ($aLessons) {
            /**
             * 判断当前是上课 还是即将上课
             */
            $startime = $aLessons[0]['startime'];
            $info['lessons_id'] = $aLessons[0]['id'];
            if ($startime > $time) {//即将上课
                $this->_red(array('reqCode' => $reqCode, 'status' => 0, 'data' => $info));
            } else {//上课
                $this->_red(array('reqCode' => $reqCode, 'status' => 1, 'data' => $info));
            }
        }
        $this->_red(array('reqCode' => $reqCode, 'status' => 2, 'data' => 'fail'));
    }
复制代码

进行json加密。然后传递给iOS人员,供他们使用。

 

小结:

这就是一个简单的接口流程,编写接口,要有一定的规范。说白了,它是一种思想,然后通过语言来实现这种思想。

客服端,访问服务器,提供一定的参数,然后就能获取相应的信息。就是这么个过程。

编写的时候,要能够根据,他们提供的参数,正确的获取到他们想要的信息就行了。



本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/archive/2013/04/23/3037841.html,如需转载请自行联系原作者

相关文章:

  • 设计模式总结篇系列:原型模式(Prototype)
  • oracle开启/关闭archlog
  • java虚拟机所管理的内存包括的运行时数据区域
  • Chrome浏览器查看cookie
  • 生成树协议设置
  • Java 系列文章
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • 2015年热门的国产开源软件TOP 50
  • java基础面试题
  • 智能手机:“单兵作战”已死,多元化营销永生
  • mac修复ab及siege安装
  • 7 -- Spring的基本用法 -- 12... Spring 3.0 提供的表达式语言(SpEL)
  • 每日阅读
  • win 下 apache 实现负载均衡
  • PHP下ajax跨域的解决方案之jsonp
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • canvas 五子棋游戏
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • javascript从右向左截取指定位数字符的3种方法
  • magento 货币换算
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • React-flux杂记
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 力扣(LeetCode)965
  • 入门到放弃node系列之Hello Word篇
  • 算法之不定期更新(一)(2018-04-12)
  • 详解NodeJs流之一
  • 携程小程序初体验
  • 云大使推广中的常见热门问题
  • 在Unity中实现一个简单的消息管理器
  • k8s使用glusterfs实现动态持久化存储
  • 我们雇佣了一只大猴子...
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (2)(2.10) LTM telemetry
  • (6)设计一个TimeMap
  • (windows2012共享文件夹和防火墙设置
  • (附源码)springboot教学评价 毕业设计 641310
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (篇九)MySQL常用内置函数
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (十八)SpringBoot之发送QQ邮件
  • (未解决)macOS matplotlib 中文是方框
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET 反射的使用
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .Net 中Partitioner static与dynamic的性能对比
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)