0

0

PHP服务端开发APP接口

不言

不言

发布时间:2018-04-26 14:42:55

|

9356人浏览过

|

来源于php中文网

原创

本篇文章介绍的是关于php服务端开发app接口 ,现在给大家分享一下,有兴趣的朋友可以看一下


一、APP接口简介

什么是app接口?app接口就是用服务端程序如php写好的脚本,以供app客户端请求而获得数据的一个东西。比如一个商铺app的首页,肯定有一些商品列表,那么当你打开这个app时,这个封装在app里的这个首页其实会去请求一个远程php文件如:http://www.example.com/index.php 去获得需要展示在首页的商品列表数据。前端工程师拿到这些数据,就会按照特定的设计,将这些内容展示出来了。
接口要实现的目的就是这样。一个app内部通常需要访问多个php接口来获得不同的数据。下面具体讲一讲接口实现的流程以及实现接口需要的一些核心的技术。


二、PHP接口知识

JSON和XML方式封装通信接口

response.class.php

 $code,                "message" => $message,                "data" => $data
            );        return json_encode($result);
    }    public function xml($code,$message,$data){
        $result = array(                "code" => $code,                "message" => $message,                "data" => $data
            );
        header('Content-Type:text/xml');        $xml = "\n";        $xml .= "";        $xml .= self::encodeXml($result);        $xml .= "";        return $xml;
    }    /**
     *将数据解析为XML字符串
     */

    public static function encodeXml($data){
        $attr = $xml = "";        foreach($data as $key => $value){                if(is_numeric($key)){                    $attr = " id='{$key}'";                    $key = "item";
                }                $xml .= "<{$key}{$attr}>";                $xml .= is_array($value)?self::encodeXml($value):$value;                $xml .= "";
        }        return $xml;
    }
}

response.class.php是一个最简单的返回json或XML格式数据的类
下面贴出接口文件代码:
returndata.php

 "ruanwnewu",        "sex"  => "1",        "age"  => "28",        "exp" => array(                "2012" => "北京瑞泰新",                "2013" => "兄弟连",                "2014" => "木蚂蚁科技"
            )
    );//实例化response类$response = new Response;//返回数据echo $response -> json($code,$message,$data);

三、实际开发例子

  • 开发三个接口(登录、注册、文件上传),分别完成对应的功能

    立即学习PHP免费学习笔记(深入)”;

  • 因为本人不做APP开发,所以在实际的接口测试过程中,运用Firefox浏览器的RESTClient扩展模拟APP请求服务和接收数据
    (1)登录、注册接口的编写
    直接上代码:

 0){        $row = mysql_fetch_array($result);        $salt = $row["salt"];        $new_password = md5($password."".$salt);        if ($new_password == $row["password"]){            //登录成功
            $current_time = new DateTime();            $login_time = $current_time -> format('Y-m-d H:i:s');            $result =  mysql_query("UPDATE app_account SET last_lgin_time='".$login_time."' WHERE account_name='".$row['account_name']."'");            $array = array();            $array["account_id"] = $row["account_id"];            $array["account_name"] = $row["account_name"];            $array["create_time"] = $row["creat_time"];            $json = json_encode(array(                  "resultCode"=>200,                  "message"=>"login successed!",                  "data"=>$array));            echo($json);
        }else{            $json = json_encode(array(                  "resultCode"=>500,                  "message"=>"The password is wrong!please try again."
                  ));            echo($json);
         }
    }else{        //登录失败
        $json = json_encode(array(              "resultCode"=>500,              "message"=>"please register!"
              ));        echo($json);
    }
}//注册接口function register(){
    $account_name = $_POST["username"];    $password = $_POST["password"];    $result = mysql_query("select * from app_account where account_name='".$account_name."'");    //查询失败
    if (!$result){        $json = json_encode(array(              "resultCode"=>500,              "message"=>"select failed!"
              ));        echo($json);
    }    //用户名已经注册
    if (mysql_num_rows($result) > 0){        $json = json_encode(array(              "resultCode"=>500,              "message"=>"register failed!"
              ));        echo($json);
    }else{        //插入记录到数据库中
        $account_id = uniqid();        $salt = uniqid();        $new_password = md5($password."".$salt);        $current_time = new DateTime();        $create_time = $current_time -> format('Y-m-d H:i:s');        $last_login_time = $create_time;        $result = mysql_query("insert into app_account(account_id,account_name,password,salt,creat_time,last_lgin_time) values('".$account_id."', '".$account_name."', '".$new_password."', '".$salt."', '".$create_time."', '".$last_login_time."')");        $user_id = uniqid();        $result1 = mysql_query("INSERT INTO app_user(user_id,username,account_id) VALUES('".$user_id."', '".$account_name."', '".$account_id."')");        if ($result){           $json = json_encode(array(                 "resultCode"=>200,                 "message"=>"register successed!"
                 ));           echo($json);
        }
    }
}//文件上传接口function upload(){}?>

RESTClient测试:
这里写图片描述
(注册也是类似的操作)
(2)文件上传
因为是模拟,而文件上传接口涉及到文件的上传,RESTClient无法模拟。所以单独写一个客户端uploadClient.html来模拟文件上传。
uploadClient.html

小邮包 包月订购包年程序
小邮包 包月订购包年程序

小邮包-包月订购包年服务网,该程序由好买卖商城开发,程序采用PHP+MYSQL架设,程序商业模式为目前最为火爆的包月订制包年服务模式,这种包年订购在国外网站已经热火很多年了,并且已经发展到一定规模,像英国的男士用品网站BlackSocks,一年的袜子购买量更是达到了1000万双。功能:1、实现多产品上线,2、不用注册也可以直接下单购买,3、集成目前主流支付接口,4、下单发货均有邮件提醒。

下载

    文件上传
    
选择文件:
用户ID:
心率:

服务端接收文件接口upload.php
upload.php

1,            "message"=>"失败,上传文件出错!"
        );        echo json_encode($data);
    }    else{        //获取文件后缀名
        $file_extension = substr(strrchr($_FILES['filename']['name'], '.'), 1);        //判断文件夹是否存在
        $path = "/var/www/html/FECG/fecg_segment_data/".$userid;        if (!file_exists($path)){            //创建以用户名命名的文件夹
            if(mkdir ($path)){               $data = array("message"=>"ok");               echo json_encode($data);}
        }        //对上传文件进行命名
        $file_path = '/var/www/html/FECG/fecg_segment_data/'.$userid.'/'.date("YmdHis").".".$file_extension;        if (is_uploaded_file($_FILES['filename']['tmp_name'])){            $result = move_uploaded_file($_FILES['filename']['tmp_name'], $file_path);            if ($result){                //文件上传成功,进行第二步更新数据库
                $result = mysql_query("SELECT * FROM app_account WHERE account_name='".$userid."'");                if (!$result){                     $num = 123;                     $data = array(                        "resultCode"=>2,                        "message"=>"userid",                        "data"=>$userid
                     );                     echo json_encode($data);
                }                $row = mysql_fetch_array($result, MYSQL_ASSOC);                $account_id = $row["account_id"];                $result1 = mysql_query("SELECT * FROM app_user WHERE account_id='".$account_id."'");                $row1 = mysql_fetch_array($result1, MYSQL_ASSOC);                $user_id = $row1["user_id"];                $user_name = $row1["username"];                $ecg_segment_id = uniqid();                $channel = 3;                $current_time = new DateTime();                $create_time = $current_time -> format('Y-m-d H:i:s');                $result = mysql_query("INSERT INTO ecg_segment(ecg_segment_id,channel,heart_rate,ecg_url,user_name,user_id)
                                      VALUES('".$ecg_segment_id."', '".$channel."', '".$heart_rate."', '".$file_path."', '".$user_name."', '".$user_id."')");                $task_id = uniqid();                $server_analysis = "异常";                $result1 = mysql_query("INSERT INTO task(task_id,creat_time,server_analysis,ecg_segment_id)
                                      VALUES('".$task_id."', '".$create_time."', '".$server_analysis."', '".$ecg_segment_id."')");                if ($result){                    $data = array(                        "resultCode"=>2,                        "message"=>"文件上传成功!"
                        );                    echo json_encode($data);
                }                else{                    $data = array(                        "resultCode"=>3,                        "message"=>"服务器错误!"
                        );                    echo json_encode($data);
                }
            }            else{                $data = array(                    "resultCode"=>4,                    "message"=>"uploaded failed!"
                    );                echo json_encode($data);
            }
        }        else{            $data = array(                "resultCode"=>5,                "message"=>"文件上传失败!"
            );            echo json_encode($data);
        }
    }
}else{    $data = array(         "resultCode"=>300,         "message"=>"文件名不能为空!"
         );    echo json_encode($data);
}?>

(上述代码都是根据本人项目需要开发的相应接口)

相关推荐:

最清晰的PHP服务端环境搭建的图文教程

七牛云存储 - PILI直播 PHP服务端SDK 代码怎么引入到自己的项目中?

移动端与PHP服务端接口通信流程设计增强版

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2037

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1372

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1281

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

951

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1406

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1231

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1440

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1303

2023.11.13

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

150

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ITcastjQuery视频教程
ITcastjQuery视频教程

共7课时 | 1.1万人学习

PHP课程
PHP课程

共137课时 | 8.2万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号