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

angryTom
Freigeben: 2023-04-07 15:04:01
nach vorne
3991 Leute haben es durchsucht

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            ------------------------------>             服务器
                      <-----------------------------                                    
                         返回数据
Nach dem Login kopieren
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>
Nach dem Login kopieren

Instanz:

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

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;
       }
Nach dem Login kopieren

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;
            }
Nach dem Login kopieren

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"}}
Nach dem Login kopieren

====> 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();
              ?>
Nach dem Login kopieren

Einfache Instanziierung mit zusammengesetzter Zeichenfolge:

           <?xml version="1.0" encoding="utf-8"?>
           <test>This is the root element</test>
Nach dem Login kopieren
    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;
             }
Nach dem Login kopieren
  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模块下:
Nach dem Login kopieren
    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;
             }
Nach dem Login kopieren
        //对数据再处理
Nach dem Login kopieren
    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;
            }
Nach dem Login kopieren
某个Controller:
Nach dem Login kopieren

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;
         }
Nach dem Login kopieren


Letzte Seite:

Server:

   封装方法:show($code,$message,$data=array(),$type=&#39;json/xml&#39;)
Nach dem Login kopieren
<?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;
    }
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage