Heim  >  Artikel  >  Backend-Entwicklung  >  Der gesamte Prozess der Entwicklung einer APP-Schnittstelle mit PHP (1)

Der gesamte Prozess der Entwicklung einer APP-Schnittstelle mit PHP (1)

angryTom
angryTomnach vorne
2019-10-12 14:22:133999Durchsuche

1. Lernpunkte:

Serverseite –> Aufrufschnittstelle –> Einführung: (PHP-Entwicklungs-APP-Schnittstelle)

PHP-objektorientierte Schnittstelle: abstrakte Klasse, Schnittstellendefinition==>interface.php

===>1 🎜>

APP-Schnittstelle (Kommunikationsschnittstelle): Erhalten Sie Daten über die Schnittstelle und geben Sie die Daten in die APP ein

–> Fokus der APP-Entwickler: APP-Adresse (Schnittstellenadresse) anfordern + Daten zurückgeben

APP-(Kommunikations-)Schnittstellendefinition:

1. Schnittstellenadresse: http://app.com/api.php?format=xml

2. Schnittstellendatei: app .php Behandelt einige Geschäftslogiken

3. Schnittstellendaten

(empfohlenes Lernen:

PHP-Video-Tutorial

)

3 🎜>

Wie APP kommuniziert:

      C   (接口地址:http://app.com/api.php?format=xml/json)     S
   客户端APP            ------------------------------>             服务器
                      <-----------------------------                                    
                         返回数据
4. Unterschied im Client-APP-Kommunikationsformat

1.xml: Erweiterung Markup-Sprache (1. Wird verwendet Markieren Sie Daten und definieren Sie Datentypen. Es handelt sich um eine Quellsprache, die es Benutzern ermöglicht, ihre eigene Auszeichnungssprache zu definieren. Das XML-Format ist einheitlich, plattform- und sprachübergreifend, eignet sich sehr gut für die Datenübertragung und -kommunikation und ist in der Branche seit langem anerkannt . Standard)

rrree 2.json: Ein gut lesbares und schnell zu schreibendes Datenaustauschformat. Es kann für den Datenaustausch auf verschiedenen Plattformen verwendet werden, völlig unabhängig von der Sprache Textformat. Diese Eigenschaft macht JSON zu einer idealen Datenaustauschsprache.

Die Lesbarkeit von XML ist besser, die Datengenerierung von JSON (json_encode (array)) und die Übertragungsgeschwindigkeit sind besser

Was die APP-Schnittstelle macht:

Daten abrufen: Daten aus der Datenbank oder dem Cache abrufen und die Daten dann über die Schnittstelle an den Client zurückgeben

Daten senden: Daten über die Schnittstelle an den Server senden und dann verarbeiten es in die Datenbank über den Server oder eine andere Verarbeitung

6. JSON-Kapselungs-Kommunikationsschnittstelle

PHP generiert JSON-Daten: json_encode($arr); 🎜>Hinweis: Diese Funktion kann nur UTF-8-codierte Daten akzeptieren. Wenn Sie Daten in anderen Formaten übergeben, gibt die Funktion null zurück

Anmerkungsformat für Kommunikationsdaten:

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

Instanz:

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

Ein bestimmter Controller:

  某个server中:
    public  function json($code,$message = &#39;&#39;,$data = array())
    {
            if (!is_numeric($code)){
                return &#39;错误&#39;;
            }
             $result = array(
                &#39;code&#39; => $code,
                &#39;message&#39; => $message,
                &#39;data&#39; => $data
        );
        echo json_encode($result);
        exit;
       }

Browser: http://127.0.0.1/admin/zhw-categorys/jsons

    public function jsonsAction()
           {
               $arr = array(
                   &#39;id&#39; => 1,
                   &#39;name&#39; => &#39;jiang&#39;
              );
            $k = wei()->zhwCategory()->json(200,&#39;成功咯&#39;,$arr);
            return $k;
            }

7. PHP generiert XML-Daten:

7.1 PHP generiert XML-Daten

1. Assemble-String

2. Verwenden Sie die Systemklasse: DomDocument

XMLWriter

SimpleXML

Bei Verwendung von DomDocument:

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

====> Ergebnis:

    <?php 
                     $dom = new DomDocument(&#39;1.0&#39;,&#39;utf-8&#39;);
                     $element = $dom->createElement(&#39;test&#39;,&#39;This id root element&#39;);
                     $dom->appendChild($element);
                     echo $dom->saveXML();
              ?>

Einfache Instanziierung mit zusammengesetzter Zeichenfolge:

           <?xml version="1.0" encoding="utf-8"?>
           <test>This is the root element</test>
    public static function xml()
            {
                  header("Content-Type:text/html");
                  $xml = "<?xml version=&#39;1.0&#39; encoding=&#39;UTF-8&#39;?>\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;
             }
  7.2封装XML数据方法:
          封装方法:xmlEncode($code,$message=&#39;&#39;,$data = array());
         data数据分析:
                 1.array(&#39;index&#39; => &#39;api&#39;);
                 2.array(1,7.89);
        具体:
            server模块下:
    public function xmlEncode($code,$message = &#39;&#39;,$data=array())
             {
                 if(!is_numeric($code)){
                    return "错误";
                 }
                 $result = array(
                     &#39;code&#39; => $code,
                     &#39;message&#39; => $message,
                     &#39;data&#39; => $data,
                 );
                 header("Content-Type:text/xml");
                 $xml = "<?xml version=&#39;1.0&#39; encoding=&#39;UTF-8&#39;?>\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=&#39;{$key}&#39;";
                   $key = "item";
               }
               $xml .= "<{$key} {$attr}>";  //它们{$key} {$attr}之间要有一个小空格
               $xml .=is_array($value) ? self::xmlToEncode($value):$value;
               $xml .="</{$key}>\n";
            }
               return $xml;
            }
某个Controller:

8 .Umfassende Methode zur Kapselung von Kommunikationsdaten:

     public function xmlsAction()
        {
            $arr = array(
               &#39;id&#39; => 1,
               &#39;name&#39; => &#39;jiang&#39;,
               &#39;type&#39; =>array(4,5,6),
               &#39;test&#39; =>array(1,45,67=>array(1,2,3)),
            );
           $k = wei()->zhwCategory()->xmlEncode(200,&#39;成功咯&#39;,$arr);
           return $k;
         }


Letzte Seite:

Server:

   封装方法:show($code,$message,$data=array(),$type=&#39;json/xml&#39;)
<?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=&#39;&#39;,$data=array(),$type = self::JSON)
    {
        if (!is_numeric($code)){
            return "错误编码";
        }
        $result = array(
            &#39;code&#39; => $code,
            &#39;message&#39; => $message,
            &#39;data&#39; => $data,
        );
        if($type == &#39;json&#39;){
            self::json($code,$message,$data);
            exit;
        }elseif($type == &#39;array&#39;){
            var_dump($result);
        }elseif ($type == &#39;xml&#39;){
            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 = &#39;&#39;,$data = array())
    {
        if (!is_numeric($code)){
            return &#39;错误&#39;;
        }
        $result = array(
            &#39;code&#39; => $code,
            &#39;message&#39; => $message,
            &#39;data&#39; => $data
        );
        echo json_encode($result);
        exit;
    }
    /**
     * 按xml方式输出通信数据
     * @param integer $code 状态码
     * @param string $message 提示信息
     * @param array $data 数据
     * return string
     */
    public function xmlEncode($code,$message = &#39;&#39;,$data=array())
    {
        if(!is_numeric($code)){
            return "错误";
        }
        $result = array(
            &#39;code&#39; => $code,
            &#39;message&#39; => $message,
            &#39;data&#39; => $data,
        );
        header("Content-Type:text/xml");
        $xml = "<?xml version=&#39;1.0&#39; encoding=&#39;UTF-8&#39;?>\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=&#39;{$key}&#39;";
                $key = "item";
            }
            $xml .= "<{$key} {$attr}>";
            $xml .=is_array($value) ? self::xmlToEncode($value):$value;
            $xml .="</{$key}>\n";
        }
        return $xml;
    }
}

Das obige ist der detaillierte Inhalt vonDer gesamte Prozess der Entwicklung einer APP-Schnittstelle mit PHP (1). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen