• 接口初探


    引言:公司做的是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人员,供他们使用。

    小结:

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

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

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

  • 相关阅读:
    java并发5-volatile关键字解析
    java并发4-单例设计方法
    Java并发3-多线程面试题
    JAVA并发2
    JAVA并发
    2015第27周三Java内存模型
    同一时候使用windows和linux系统
    深入浅出Windows BATCH
    DrawText的使用
    redmine忘记username和password
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/3037841.html
Copyright © 2020-2023  润新知