当前位置:首页 » 编程语言 » phpapi实例

phpapi实例

发布时间: 2022-09-12 13:54:09

A. 什么是API接口,php开发API接口的例子

就是php只处理数据,而不直接输出html


把视图层都交给js去完成。


比如:

//获取数据
$id=$_GET['id'];
if($id){
//支数据库取数据
$sql="select*fromtablewhereid='".$id."'";
$re=.....;
echojson_encode($re);//返回json格式数据给前端处理
}

//修改数据
if($id&&$_GET['edit']){
////数据库操作
echo"修改成功";
}

B. 怎么用PHP开发API供其他客户端调用

一、接口的分类:

1、URL类型的接口
URL
路由带参数式的接口!这个很好做!只要有过Web开发经验的人都能完成!这种接口数据不够隐蔽性,可以直接在浏览其中看到,如支付宝的交易请求URL。需
要加一个MD5签名,和服务器端的再次向支付宝服务器发送验证!虽然soap方式传递的数据隐蔽性很好!但为了数据安全,难免也需要进行数据签名。

2、SOAP类型的接口
无关编程语言、无关平台、扩展性很好,要实现一个SOAP 型的接口,有两种方式:一种有WSDL文件方式、一中无WSDL文件方式!

于热爱研究型的人来说,使用第一种方式可以让你清楚的了解PHP是怎么创建了一个Web
Service!但第一种对于新手来说,创建一个XML格式的WSDL文件,是比较难的,这你的先了解熟悉什么是XML!学会XML语法!但对于一个急于
解决问题的人来说!没有这么多的时间去熟悉!所以这是件烦恼的事!

二、PHP环境设置
先配置下PHP的soap环境支持:
找到php.ini文件
;extension=php_soap.dll
删除掉";" ,重启apache服务器
为了便于测试,需要关于wsdl缓存
方式1:
配置文件:php.ini 选项 soap.wsdl_cache_enabled 设置为0
方式2:
代码头添加:ini_set('soap.wsdl_cache_enabled', "0"); //关闭wsdl缓存

三、有WSDL文件方式创建

这里先介绍标准的webservice。 那么如何创建wsdl呢?对于PHP来说这确实是件很不容易的事情,有人说用zend
studio创建很方便,这是一种方法。但对于那些不喜欢用zend studio的人来说,会觉得创建一个web service还要安装zend
studio,太强人所难了。
在这里介绍一个简单的方法,到网上下载SoapDiscovery.class.php类,里面有个公用方法:getWSDL,这个方法末尾是用的 return,那么,你修改一下这个方法:
//return sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '</definitions>');
//生成wsdl文件,将上面的return注释
$fso = fopen($this->class_name . ".wsdl" , "w");
fwrite($fso,
sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL,
$serviceWSDL, $messageWSDL, '</definitions>'));
现在生成wsdl的类有了,SoapDiscovery.class.php(源码在最末尾)。

再准备一个提供服务的Service.php类文件或者函数就可以创建wsdl了!

C. 如何使用MixPHP来开发API接口

下面做一个开发 API 接口的简单实例:

从articles表,通过id获取一篇文章。

访问该接口的 URL:

1

http://www.e.com/articles/details?id=1

数据库表结构如下:

1

2

3

4

5

6

7

CREATE TABLE `articles` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`title` varchar(255) NOT NULL,

`content` varchar(255) NOT NULL,

`dateline` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

第一步

修改数据库配置文件,MixPHP 的应用配置文件中,关于数据库的信息都引用了 common/config/database.php 文件。

框架默认的 404/500 响应是网页,而 API 服务需要响应 JSON 数据,通常其他传统 MVC 框架需要修改很多地方才可完成这个需求,MixPHP 本身就提供该种配置,只需修改一下配置即可。

MixPHP 的默认 Web 应用中有两个配置文件,分别为:

  • main.php : 部署在 mix-httpd 时使用。

  • main_compatible.php :部署在 Apache/PHP-FPM 时使用。

  • 开发 API 时我们推荐在 Apache/PHP-FPM 下开发,上线再部署至 mix-httpd 即可,反正是无缝切换的。

    现在我们修改 response 键名下的 defaultFormat 键为 mixhttpError::FORMAT_JSON,如下:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

  • // 响应

    'response' => [

    // 类路径

    'class' => 'mixhttpcompatibleResponse',

    // 默认输出格式

    'defaultFormat' => mixhttpResponse::FORMAT_JSON,

    // json

    'json' => [

    // 类路径

    'class' => 'mixhttpJson',

    ],

    // jsonp

    'jsonp' => [

    // 类路径

    'class' => 'mixhttpJsonp',

    // callback键名

    'name' => 'callback',

    ],

    // xml

    'xml' => [

    // 类路径

    'class' => 'mixhttpXml',

    ],

    ],

  • 然后修改 main_compatible.php 文件中 error 键名下的 format 键为 mixhttpError::FORMAT_JSON,如下:

    1

    2

    3

    4

    5

    6

    7

  • // 错误

    'error' => [

    // 类路径

    'class' => 'mixhttpError',

    // 输出格式

    'format' => mixhttpError::FORMAT_JSON,

    ],

  • 第三步

    创建控制器:

    1

  • apps/index/controllers/ArticlesController.php

  • 1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

  • <?php

    namespace appsindexcontrollers;

    use mixfacadesRequest;

    use mixhttpController;

    use appsindexmessagesErrorCode;

    use appsindexmodelsArticlesForm;

    class ArticlesController extends Controller

    {

    public function actionDetails()

    {

    // 使用模型

    $model = new ArticlesForm();

    $model->attributes = Request::get();

    $model->setScenario('actionDetails');

    if (!$model->validate()) {

    return ['code' => ErrorCode::INVALID_PARAM];

    }

    // 获取数据

    $data = $model->getDetails();

    if (!$data) {

    return ['code' => ErrorCode::ERROR_ID_UNFOUND];

    }

    // 响应

    return ['code' => ErrorCode::SUCCESS, 'data' => $data];

    }

    }

  • 创建错误码类:

    1

  • apps/index/messages/ErrorCode.php

  • 1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

  • <?php

    namespace appsindexmessages;

    class ErrorCode

    {

    const SUCCESS = 0;

    const INVALID_PARAM = 100001;

    const ERROR_ID_UNFOUND = 200001;

    }

  • 创建表单验证模型:

    1

  • apps/index/models/ArticlesForm.php

  • 1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

  • <?php

    namespace appsindexmodels;

    use mixvalidatorsValidator;

    use appscommonmodelsArticlesModel;

    class ArticlesForm extends Validator

    {

    public $id;

    // 规则

    public function rules()

    {

    return [

    'id' => ['integer', 'unsigned' => true, 'maxLength' => 10],

    ];

    }

    // 场景

    public function scenarios()

    {

    return [

    'actionDetails' => ['required' => ['id']],

    ];

    }

    // 获取详情

    public function getDetails()

    {

    return (new ArticlesModel())->getRowById($this->id);

    }

    }

  • 创建数据表模型:

    1

  • apps/common/models/ArticlesModel.php

  • 1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

  • <?php

    namespace appscommonmodels;

    use mixfacadesRDB;

    class ArticlesModel

    {

    const TABLE = 'articles';

    // 获取一行数据通过id

    public function getRowById($id)

    {

    $sql = "SELECT * FROM `" . self::TABLE . "` WHERE id = :id";

    $row = RDB::createCommand($sql)->bindParams([

    'id' => $id,

    ])->queryOne();

    return $row;

    }

    }

  • 以上就是全部代码的编写。

    D. php如何开发API接口

    比如一个自定义函数:function test(){echo ‘hello world’;}就可以叫做 api。api 既可以是单个的函数,也可以是封装在类里的方法,当然它们也是程序代码。开发一个 api 的流程可以很简单,也可以很复杂,视具体的编程任务而决定,并没有特定的规则。比如,你需要为自己建立一个常用的函数库,命名为 my.lib.php然后把你自己编写的自定义函数,全部写在这个文件里面,那么,你就拥有了自己的api。开发的时候,只需要引入 my.lib.php,你就可以调用自己的 api 了。这是一个比较简单的例子。稍微复杂一点的,你可以把函数封装在类里面,方便继承和重用,还可以根据函数名称做一些程序设计,这个一句话说不清楚,给一个简单的例子吧:class mylib{function showmy(){echo ‘这是我的一个类方法’;}}调用的时候,先要实例化类,然后再调用方法。再复杂一点的就是使用类接口,区别就是接口里面定义的只是方法原型,而你需要通过具体的类来实现接口中的函数,具体请参考 php 手册

    E. java 怎么调用php的api接口

    这个看你的需求了 如果你是底层调用 你可以自己写参考php的源码写c接口,如果不是底层,就php让把数据上传xml json格式 java处理。。。

    F. 什么是api,php中的api有哪些啊能否帮我给出一个有关php的api的应用的例子谢谢大家啊

    API(Application Programming Interface,应用程序编程接口)是一套用来控制Windows的各个部件(从桌面的外观到为一个新进程分配的内存)的外观和行为的一套预先定义的Windows函数.用户的每个动作都会引发一个或几个函数的运行以告诉Windows发生了什么.

    PHP API的话是PHP开发平台集成的一些PHP的函数库,说白了就是一堆写好的东西让你来使用,好帮助你快速的进行PHP程序的开发。

    如淘宝的API,QQ账号登陆的API

    G. 什么是API接口,PHP开发API接口的例子

    api就是接口,其实说白了就是你平时写的控制器方法,只不过这个方法的数据要加密,要验证,是用来把这个方法的url给app或者客户端以及别人来调的。这个方法就是api接口

    H. 如何使用 php 开发 api

    比如一个自定义函数:function test(){echo ‘hello world’;}就可以叫做 api。api 既可以是单个的函数,也可以是封装在类里的方法,当然它们也是程序代码。开发一个 api 的流程可以很简单,也可以很复杂,视具体的编程任务而决定,并没有特定的规则。比如,你需要为自己建立一个常用的函数库,命名为 my.lib.php然后把你自己编写的自定义函数,全部写在这个文件里面,那么,你就拥有了自己的api。开发的时候,只需要引入 my.lib.php,你就可以调用自己的 api 了。这是一个比较简单的例子。稍微复杂一点的,你可以把函数封装在类里面,方便继承和重用,还可以根据函数名称做一些程序设计,这个一句话说不清楚,给一个简单的例子吧:class mylib{function showmy(){echo ‘这是我的一个类方法’;}}调用的时候,先要实例化类,然后再调用方法。再复杂一点的就是使用类接口,区别就是接口里面定义的只是方法原型,而你需要通过具体的类来实现接口中的函数,具体请参考 php 手册,关于接口的介绍。还有一种接口不是通过直接访问接口代码来实现功能的,这就是我们常说的 web service,俗称远程调用:比如:我的一个网站 www.test.com/api在这个网址里包含了我开放的一些接口,可以供网络上的其它用户来获取我网站的会员信 息 等 , 假 设 这 个 接 口 名 叫 userinfo , 那 么 开 发 者 可 以 通 过www.test.com/api/userinfo 来获取某一个会员的信息,当然具体的代码肯定很多,这里只是举例子说明。尤其要着重说明的是,开发者不是通过直接访问 www.test.com/api/userinfo 来获取用户信息的,当向别人开发自己网站的接口时,你需要编写一些接口文件,供别人来使用 ,一般可以通过 fsockopen 函数来实现。

    热点内容
    hill密码的加密 发布:2025-01-12 09:56:33 浏览:613
    组卷源码 发布:2025-01-12 09:51:12 浏览:995
    java文件夹改名 发布:2025-01-12 09:49:01 浏览:115
    脚本函数未定义 发布:2025-01-12 09:39:44 浏览:635
    页面PHP 发布:2025-01-12 09:38:07 浏览:200
    邮政银行打电话登录密码是什么 发布:2025-01-12 09:37:27 浏览:563
    linuxroot远程登录 发布:2025-01-12 09:37:26 浏览:302
    怎么算服务器ip 发布:2025-01-12 08:59:19 浏览:854
    安卓与ios哪个适合做主力机 发布:2025-01-12 08:54:11 浏览:341
    微软怎么关闭配置更新 发布:2025-01-12 08:34:23 浏览:316