Rumah pembangunan bahagian belakang tutorial php PHP开发APP接口全过程(一)

PHP开发APP接口全过程(一)

Oct 12, 2019 pm 02:22 PM
app php

1、学习要点: 

服务器端 –> 数据库|缓存 –>调用接口 –>客户端 

2、APP接口介绍:(PHP开发APP接口) 

PHP面向对象的接口:抽象类,interface定义 ==>interface.php 

===>1.很规范 

APP接口(通信接口):通过接口得到数据,将数据填充到APP中 

—>APP开发人员关注:请求APP地址(接口地址)+返回数据 

APP(通信)接口定义: 

1.接口地址:http://app.com/api.php?format=xml

2.接口文件:app.php处理一些业务逻辑 

3.接口数据

(推荐学习:PHP视频教程

3.客户端APP通信: 

APP是如何进行通信的:

      C   (接口地址:http://app.com/api.php?format=xml/json)     S
   客户端APP            ------------------------------>             服务器
                      <-----------------------------                                    
                         返回数据
Salin selepas log masuk

4.客户端APP通信格式区别

1.xml:扩展标记语言(1.用来标记数据,定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言,xml格式统一,跨平台和语言,非常适合数据传输和通信,早已成为业界公认的标准)

<?xml version="1.0" encoding="UTF-8"?>
    <item>
        <title>测试</title>
        <test id="1">
        <description>测试oen</description>
        <address>深圳</address>
    </item>
Salin selepas log masuk

2.json:一种清凉级别的数据交换格式,具有良好的可读和便于快速编写的特性,可在不同平台证件进行数据交换,JSON采用兼容性很高的,完全独立于语言文本格式。这种特性使JSON成为理想的数据交换语言。

XML的可读性要好,JSON的生成数据性 (json_encode(数组)) 传输速度方面要好

5.APP接口做的那些事:

获取数据:从数据库中或缓存中获取数据,然后通过接口数据返回客户端

提交数据:通过接口提交数据给服务器,然后通过服务器入库处理,或者其他处理

6.JSON方式封装通信接口

PHP生成json数据:json_encode($arr);

注释:该函数只能接受UTF-8编码的数据,如果传递其他格式的数据该函数会返回null

通信数据标注格式:

code 状态码(200 400等) 
message 提示信息(邮箱格式不正确;数据返回成功等) 
data 返回相应的数据 
—————————- 
-JSON 
code : 200 
message :”数据返回成功” 
-data 
id :1 
name : “测试”
Salin selepas log masuk

实例:

  某个server中:
    public  function json($code,$message = '',$data = array())
    {
            if (!is_numeric($code)){
                return '错误';
            }
             $result = array(
                'code' => $code,
                'message' => $message,
                'data' => $data
        );
        echo json_encode($result);
        exit;
       }
Salin selepas log masuk

某个Controller:

    public function jsonsAction()
           {
               $arr = array(
                   'id' => 1,
                   'name' => 'jiang'
              );
            $k = wei()->zhwCategory()->json(200,'成功咯',$arr);
            return $k;
            }
Salin selepas log masuk

浏览器:http://127.0.0.1/admin/zhw-categorys/jsons

{"code":200,"message":"\u6210\u529f\u54af","data":{"id":1,"name":"jiang"}}
Salin selepas log masuk

7.PHP生成XML数据:

7.1PHP生成XML数据

1.组装字符串

2.使用系统类:DomDocument

XMLWriter

SimpleXML

如用DomDocument:

    <?php 
                     $dom = new DomDocument('1.0','utf-8');
                     $element = $dom->createElement('test','This id root element');
                     $dom->appendChild($element);
                     echo $dom->saveXML();
              ?>
Salin selepas log masuk

====>结果:

           <?xml version="1.0" encoding="utf-8"?>
           <test>This is the root element</test>
Salin selepas log masuk

使用组装字符串的简单实例性:

    public static function xml()
            {
                  header("Content-Type:text/html");
                  $xml = "<?xml version='1.0' encoding='UTF-8'?>\n";
                  $xml .= "<root>\n";
                  $xml .= "<code>200</code>\n";
                  $xml .= "<message>数据返回成功</message>\n";
                  $xml .= "<data>\n";
                  $xml .="<id>1</id>\n";
                  $xml .="<name>测试</name>\n";
                  $xml .="</data>\n";
                  $xml .="<root>";
                  echo $xml;
             }
Salin selepas log masuk
  7.2封装XML数据方法:
          封装方法:xmlEncode($code,$message='',$data = array());
         data数据分析:
                 1.array('index' => 'api');
                 2.array(1,7.89);
        具体:
            server模块下:
Salin selepas log masuk
    public function xmlEncode($code,$message = '',$data=array())
             {
                 if(!is_numeric($code)){
                    return "错误";
                 }
                 $result = array(
                     'code' => $code,
                     'message' => $message,
                     'data' => $data,
                 );
                 header("Content-Type:text/xml");
                 $xml = "<?xml version='1.0' encoding='UTF-8'?>\n";
                 $xml .= "<root>\n";
                 $xml .=self::xmlToEncode($result);
                 $xml .="</root>";
                 echo $xml;
             }
Salin selepas log masuk
        //对数据再处理
Salin selepas log masuk
    public function xmlToEncode($data){
               $xml = $attr ="";
               foreach ($data as $key=>$value){
               if(is_numeric($key)){
                   $attr = "id='{$key}'";
                   $key = "item";
               }
               $xml .= "<{$key} {$attr}>";  //它们{$key} {$attr}之间要有一个小空格
               $xml .=is_array($value) ? self::xmlToEncode($value):$value;
               $xml .="</{$key}>\n";
            }
               return $xml;
            }
Salin selepas log masuk
某个Controller:
Salin selepas log masuk
     public function xmlsAction()
        {
            $arr = array(
               'id' => 1,
               'name' => 'jiang',
               'type' =>array(4,5,6),
               'test' =>array(1,45,67=>array(1,2,3)),
            );
           $k = wei()->zhwCategory()->xmlEncode(200,'成功咯',$arr);
           return $k;
         }
Salin selepas log masuk

8.综合方式封装通信数据方法:

   封装方法:show($code,$message,$data=array(),$type='json/xml')
Salin selepas log masuk

最终页面:

server:

<?php

namespace Miaoxing\Zhw\Service;

use miaoxing\plugin\BaseModel;

class ZhwCategory extends BaseModel
{
    const JSON = "json";
    /**
     * 按x综合方式输出通信数据
     * @param integer $code 状态码
     * @param string $message 提示信息
     * @param array $data 数据
     * @param string $type 数据类型
     * return string
     */
    public function show($code,$message='',$data=array(),$type = self::JSON)
    {
        if (!is_numeric($code)){
            return "错误编码";
        }
        $result = array(
            'code' => $code,
            'message' => $message,
            'data' => $data,
        );
        if($type == 'json'){
            self::json($code,$message,$data);
            exit;
        }elseif($type == 'array'){
            var_dump($result);
        }elseif ($type == 'xml'){
            self::xmlEncode($code,$message,$data);
            exit;
        }else{
            //TODO
        }
    }
    /**
     * 按json方式输出通信数据
     * @param integer $code 状态码
     * @param string $message 提示信息
     * @param array $data 数据
     * return string
     */
    public  function json($code,$message = '',$data = array())
    {
        if (!is_numeric($code)){
            return '错误';
        }
        $result = array(
            'code' => $code,
            'message' => $message,
            'data' => $data
        );
        echo json_encode($result);
        exit;
    }
    /**
     * 按xml方式输出通信数据
     * @param integer $code 状态码
     * @param string $message 提示信息
     * @param array $data 数据
     * return string
     */
    public function xmlEncode($code,$message = '',$data=array())
    {
        if(!is_numeric($code)){
            return "错误";
        }
        $result = array(
            'code' => $code,
            'message' => $message,
            'data' => $data,
        );
        header("Content-Type:text/xml");
        $xml = "<?xml version='1.0' encoding='UTF-8'?>\n";
        $xml .= "<root>\n";
        $xml .=self::xmlToEncode($result);
        $xml .="</root>";
        echo $xml;
    }
    //对数据再处理
    public function xmlToEncode($data){
        $xml = $attr ="";
        foreach ($data as $key=>$value){
            if(is_numeric($key)){
                $attr = "id='{$key}'";
                $key = "item";
            }
            $xml .= "<{$key} {$attr}>";
            $xml .=is_array($value) ? self::xmlToEncode($value):$value;
            $xml .="</{$key}>\n";
        }
        return $xml;
    }
}
Salin selepas log masuk
Controller:
public 
function jsonsAction()
    {
        $arr = array(
            'id' => 1,
            'name' => 'jiang'
        );
        $k = wei()-
>zhwCategory()->json(200,'成功咯',$arr);
        return $k;
    }
    public function xmlsAction()
    {
        $arr = array(
            
'id' => 1,
            'name' => 'jiang',
            'type' =>array(4,5,6),
            'test' =>array(1,45,67=>array(1,2,3)),
        
);
        $k = wei()->zhwCategory()->xmlEncode(200,'成功咯',$arr);
        return $k;
    }
    public function showAction()
    {
        
$arr = array(
            'id' => 1,
            'name' => 'jiang',
            'type' =>array(4,5,6),
            'test' =>array
(1,45,67=>array(1,2,3)),
        );
        $k = wei()->zhwCategory()->show(200,'成功咯',$arr,'json');
        return $k;
    }
Salin selepas log masuk

Atas ialah kandungan terperinci PHP开发APP接口全过程(一). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian

Tarikh dan Masa CakePHP Tarikh dan Masa CakePHP Sep 10, 2024 pm 05:27 PM

Tarikh dan Masa CakePHP

Konfigurasi Projek CakePHP Konfigurasi Projek CakePHP Sep 10, 2024 pm 05:25 PM

Konfigurasi Projek CakePHP

Langkah dan langkah berjaga-jaga untuk mendaftarkan ID Apple Hong Kong (menikmati kelebihan unik Kedai Apple Hong Kong) Langkah dan langkah berjaga-jaga untuk mendaftarkan ID Apple Hong Kong (menikmati kelebihan unik Kedai Apple Hong Kong) Sep 02, 2024 pm 03:47 PM

Langkah dan langkah berjaga-jaga untuk mendaftarkan ID Apple Hong Kong (menikmati kelebihan unik Kedai Apple Hong Kong)

Muat naik Fail CakePHP Muat naik Fail CakePHP Sep 10, 2024 pm 05:27 PM

Muat naik Fail CakePHP

Penghalaan CakePHP Penghalaan CakePHP Sep 10, 2024 pm 05:25 PM

Penghalaan CakePHP

Bincangkan CakePHP Bincangkan CakePHP Sep 10, 2024 pm 05:28 PM

Bincangkan CakePHP

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Dec 20, 2024 am 11:31 AM

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP

See all articles