phpapi实例
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 函数来实现。