Maison  >  Article  >  développement back-end  >  Interface d'application de développement côté serveur PHP

Interface d'application de développement côté serveur PHP

不言
不言original
2018-04-26 14:42:558833parcourir

Cet article présente le développement de l'interface APP sur le serveur PHP. Maintenant, je vais le partager avec vous. Les amis intéressés peuvent y jeter un œil


1. Interface d'application


Qu'est-ce qu'une interface d'application ? L'interface de l'application est un script écrit dans un programme serveur tel que php, qui est utilisé par le client de l'application pour demander et obtenir des données. Par exemple, la page d'accueil d'une application de magasin doit contenir des listes de produits. Ainsi, lorsque vous ouvrez l'application, la page d'accueil encapsulée dans l'application demandera en fait un fichier php distant tel que : http://www.example.com/index . php pour obtenir les données de la liste de produits qui doivent être affichées sur la page d'accueil. Lorsque les ingénieurs front-end obtiennent ces données, ils affichent le contenu selon une conception spécifique.
C'est le but de l'interface. Une application doit généralement accéder à plusieurs interfaces PHP pour obtenir différentes données. Parlons en détail du processus de mise en œuvre de l'interface et de certaines technologies de base nécessaires à la mise en œuvre de l'interface.


2. Connaissance de l'interface PHP

Encapsulation JSON et XML de l'interface de communication

response.class.php

<?php/**
 *description 用于返回指定数据格式的类
 *@param $code [int] 返回的状态码
 *@param $message [string] 返回的状态信息
 *@param $data [array] 需要返回的数据
 *
 */class Response{
    public function json($code,$message,$data){
        $result = array(                "code" => $code,                "message" => $message,                "data" => $data
            );        return json_encode($result);
    }    public function xml($code,$message,$data){
        $result = array(                "code" => $code,                "message" => $message,                "data" => $data
            );
        header(&#39;Content-Type:text/xml&#39;);        $xml = "<?xml version=&#39;1.0&#39; encoding=&#39;UTF-8&#39;?>\n";        $xml .= "<root>";        $xml .= self::encodeXml($result);        $xml .= "</root>";        return $xml;
    }    /**
     *将数据解析为XML字符串
     */

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

response.class .php est la classe la plus simple qui renvoie des données au format json ou XML
Le code du fichier d'interface est publié ci-dessous :
returndata.php

<?phprequire "response.class.php";    //引入返回信息类//准备返回数据$code = 200;$message = "信息请求成功";$data = array(        "name" => "ruanwnewu",        "sex"  => "1",        "age"  => "28",        "exp" => array(                "2012" => "北京瑞泰新",                "2013" => "兄弟连",                "2014" => "木蚂蚁科技"
            )
    );//实例化response类$response = new Response;//返回数据echo $response -> json($code,$message,$data);

Exemples de développement réels

  • Développer trois interfaces (connexion, inscription, téléchargement de fichiers) pour compléter respectivement les fonctions correspondantes

  • Parce que je ne fais pas de développement d'applications, je l'ai testé sur le interface réelle Pendant le processus, utilisez l'extension RESTClient du navigateur Firefox pour simuler l'APP demandant des services et recevant des données

    (1) Écriture des interfaces de connexion et d'enregistrement
    Entrez directement le code :

<?phprequire ("../connect_db.php");$action = $_REQUEST["action"];$conn = db_connect();
mysql_query("set names &#39;utf8&#39;");
mysql_select_db("FECG");switch ($action){    case &#39;login&#39;:
       login();       break;    case &#39;register&#39;:
       register();       break;    case &#39;upload&#39;:
       upload();       break;    default:       break;
}//登录接口function login(){
    $account_name = $_POST["username"];    $password = $_POST["password"];    $result = mysql_query("SELECT * FROM app_account WHERE account_name=&#39;".$account_name."&#39;");    if (mysql_num_rows($result) > 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(&#39;Y-m-d H:i:s&#39;);            $result =  mysql_query("UPDATE app_account SET last_lgin_time=&#39;".$login_time."&#39; WHERE account_name=&#39;".$row[&#39;account_name&#39;]."&#39;");            $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=&#39;".$account_name."&#39;");    //查询失败
    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(&#39;Y-m-d H:i:s&#39;);        $last_login_time = $create_time;        $result = mysql_query("insert into app_account(account_id,account_name,password,salt,creat_time,last_lgin_time) values(&#39;".$account_id."&#39;, &#39;".$account_name."&#39;, &#39;".$new_password."&#39;, &#39;".$salt."&#39;, &#39;".$create_time."&#39;, &#39;".$last_login_time."&#39;)");        $user_id = uniqid();        $result1 = mysql_query("INSERT INTO app_user(user_id,username,account_id) VALUES(&#39;".$user_id."&#39;, &#39;".$account_name."&#39;, &#39;".$account_id."&#39;)");        if ($result){           $json = json_encode(array(                 "resultCode"=>200,                 "message"=>"register successed!"
                 ));           echo($json);
        }
    }
}//文件上传接口function upload(){}?>
Test RESTClient :


Interface dapplication de développement côté serveur PHP (L'enregistrement est une opération similaire)
(2) Téléchargement de fichiers
Parce qu'il s'agit d'une simulation et que l'interface de téléchargement de fichiers implique téléchargement de fichier, RESTClient ne peut pas le simuler. Écrivez donc un client uploadClient.html distinct pour simuler le téléchargement de fichiers.
uploadClient.html

<!DOCTYPE html><html><head>
    <title>文件上传</title>
    <meta charset="UTF-8" /></head><body><form action="upload.php" method="post" enctype="multipart/form-data" >
    选择文件:<input type="file" name="filename" />
    </br>
    用户ID:<input type="text" name="userid" /></br>
    心率:<input type="text" name="rate" /></br>
    <input type="submit" value="提交"></form></body></html>
Serveur recevant l'interface de fichier upload.php

upload.php

<?phprequire ("../connect_db.php");$conn = db_connect();
mysql_query("set names &#39;utf8&#39;");
mysql_select_db("FECG");$file_name = $_POST["filename"];$userid = $_POST["userid"];$heart_rate = $_POST["rate"];if ($_FILES[&#39;filename&#39;][&#39;name&#39;] != NULL){    if ($_FILES[&#39;filename&#39;][&#39;error&#39;]){        $data = array(            "resultCode"=>1,            "message"=>"失败,上传文件出错!"
        );        echo json_encode($data);
    }    else{        //获取文件后缀名
        $file_extension = substr(strrchr($_FILES[&#39;filename&#39;][&#39;name&#39;], &#39;.&#39;), 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 = &#39;/var/www/html/FECG/fecg_segment_data/&#39;.$userid.&#39;/&#39;.date("YmdHis").".".$file_extension;        if (is_uploaded_file($_FILES[&#39;filename&#39;][&#39;tmp_name&#39;])){            $result = move_uploaded_file($_FILES[&#39;filename&#39;][&#39;tmp_name&#39;], $file_path);            if ($result){                //文件上传成功,进行第二步更新数据库
                $result = mysql_query("SELECT * FROM app_account WHERE account_name=&#39;".$userid."&#39;");                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=&#39;".$account_id."&#39;");                $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(&#39;Y-m-d H:i:s&#39;);                $result = mysql_query("INSERT INTO ecg_segment(ecg_segment_id,channel,heart_rate,ecg_url,user_name,user_id)
                                      VALUES(&#39;".$ecg_segment_id."&#39;, &#39;".$channel."&#39;, &#39;".$heart_rate."&#39;, &#39;".$file_path."&#39;, &#39;".$user_name."&#39;, &#39;".$user_id."&#39;)");                $task_id = uniqid();                $server_analysis = "异常";                $result1 = mysql_query("INSERT INTO task(task_id,creat_time,server_analysis,ecg_segment_id)
                                      VALUES(&#39;".$task_id."&#39;, &#39;".$create_time."&#39;, &#39;".$server_analysis."&#39;, &#39;".$ecg_segment_id."&#39;)");                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);
}?>
(Les codes ci-dessus sont tous développés en fonction des besoins de mon Interface du projet)

Recommandations associées :

Le tutoriel graphique le plus clair sur la création d'un environnement de serveur PHP

Qiniu Cloud Storage - PILI Comment introduire le code SDK du serveur PHP de diffusion en direct dans votre propre projet ?

Version améliorée de la conception du processus de communication du terminal mobile et de l'interface du serveur PHP


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn