当前位置:首页 > PHP教程 > 正文内容

PHP开辟APP接口全过程(一)【php教程】,PHP,APP

搜教程4年前 (2019-12-01)PHP教程166
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            ------------------------------>             服务器
                      <-----------------------------                                    
                         返回数据

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>

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 : “测试”

实例:

  某个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;
       }

某个Controller:

    public function jsonsAction()
           {
               $arr = array(
                   'id' => 1,
                   'name' => 'jiang'
              );
            $k = wei()->zhwCategory()->json(200,'胜利咯',$arr);
            return $k;
            }

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

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

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();
              ?>

====>效果:

           <?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='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;
             }
  7.2封装XML数据要领:
          封装要领:xmlEncode($code,$message='',$data = array());
         data数据剖析:
                 1.array('index' => 'api');
                 2.array(1,7.89);
        细致:
            server模块下:
    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}>";  //它们{$key} {$attr}之间要有一个小空格
               $xml .=is_array($value) ? self::xmlToEncode($value):$value;
               $xml .="</{$key}>\n";
            }
               return $xml;
            }
某个Controller:
     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;
         }

8.综合体式格局封装通讯数据要领:

   封装要领:show($code,$message,$data=array(),$type='json/xml')

终究页面:

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;
    }
}
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;
    }

以上就是PHP开辟APP接口全过程(一)的细致内容,更多请关注ki4网别的相干文章!

扫描二维码推送至手机访问。

版权声明:本文由搜教程网发布,如需转载请注明出处。

本文链接:https://www.sojiaocheng.cn/15624.html

标签: PHPAPP
分享给朋友:

“PHP开辟APP接口全过程(一)【php教程】,PHP,APP” 的相关文章

PHP怎样运用Dompdf库将HTML转换为PDF?【php教程】,PHP,Dompdf库,HTML文件转换为PDF

PHP怎样运用Dompdf库将HTML转换为PDF?【php教程】,PHP,Dompdf库,HTML文件转换为PDF

当我们开辟大型PHP应用程序时,一般须要生成一些PDF文件。在本教程中,我们将给人人引见运用DomPDF库将html转换为pdf的的例子。经由过程DomPDF库,我们能够简朴地将html规划呈现为PDF文件。经由过程 DomPDF库我们能够编写外部款式表、内联款式标签、字体大小、字体色彩等。Dom...

PHP中怎样运用array_walk()函数?(代码示例)【php教程】,PHP,array_walk()

PHP中怎样运用array_walk()函数?(代码示例)【php教程】,PHP,array_walk()

array_walk()函数是PHP中的一个内置函数。不管指针位置怎样,array_walk()函数都邑遍历全部数组,对数组的各个元素举行指定的回调处置惩罚;个中数组元素的键和值是回调函数中的参数。 语法: array_walk($array, myFunction, $extraPar...

PHP数组兼并中+运算符和array_merge()之间有什么区别?【php教程】,PHP,+运算符,array_merge(),数组合并

PHP数组兼并中+运算符和array_merge()之间有什么区别?【php教程】,PHP,+运算符,array_merge(),数组合并

在PHP中,能够经由过程运用(+)运算符或array_merge()函数来兼并数组;但这两种要领有纤细的差异。下面本篇文章就来带人人相识一下这两种要领的区分,愿望对人人有所协助。 运用array_merge()函数兼并数组 array_merge()函数是一个内置函数,能够用于衔接一...

PHP怎样运用urlencode()函数举行url编码?(代码示例)【php教程】,PHP,urlencode(),url编码

PHP怎样运用urlencode()函数举行url编码?(代码示例)【php教程】,PHP,urlencode(),url编码

urlencode()函数是PHP中的一个内置函数,用于对url举行编码。下面本篇文章就来给人人引见一些urlencode()函数的用法,让人人相识urlencode()函数是怎样对url举行编码的,愿望对人人有所协助。 【视频教程引荐:PHP教程】 urlencode()函数接收一个u...

[PHP] 工场形式的一种通例使用方法【php教程】,PHP,工厂模式

[PHP] 工场形式的一种通例使用方法【php教程】,PHP,工厂模式

担任生成其他对象的类或要领,这就是工场形式,下面是一个常常见到的用法。 <?php class test{ public $x=1; public $setting; //担任生成其他对象的类或要领,这就是工场形式 public function getSetting(){...

用PHP完成SHA1withRSA署名、加密、考证【php教程】,PHP,HA1withRSA,签名加密验证

网上看到有PHP大牛分享的PHP的署名加密代码,转来和人人一同分享一下,感兴趣的小伙伴来相识一下吧。 观点诠释: SHA1平安哈希算法重要适用于数字署名规范内里定义的数字署名算法。 RSA是现在最有影响力的公钥加密算法,它能够反抗到现在为止已知的绝大多数暗码进击,已被ISO引荐为公钥数据加...