除非注明转载,否则本博客文章皆为原创。 MSN: wfnlxp@hotmail.com QQ: 176564452

为你的网站添加API--查询和新增数据

上一篇 / 下一篇  2007-03-15 13:24:27 / 个人分类:AJAX

很多网站提供了对外的API,为什么要使用API呢?

如果我的网站卖mp3,而我找另外一个卖笔记本电脑的网站合作,希望我能够在他们的网站卖我的mp3,如果他们答应的话,就出现了一些问题要解决。

首先是如果我的网站的mp3产品数据如何放入他们的网站?如果一次性操作没问题,但是我的产品会更新的,难道每次让他们手工添加!

如果有人在他们的网站上购买,应该是他们的客户,但是如何自动通知我处理订单?

尽管有一些方法可以处理,比如页面互相跳转,但光靠这样不是很恰当。

所以我要提供API让对方网站使用。

我们知道可以在PHP页面的后面添加参数,比如index.php?action=product&id=134,这样可以知道操作方法是查询(action=article),查询的对象的是id为134的产品(id=134)。

不过各种网站定义动作各不相同,有的用do=product,有的用work=showproduct。暂且不说查询的是产品还是其他的东西,对于任何操作而言,总是针对某些数据,而这些数据的操作方法归纳起来,主要是四种:新增,修改,查询,删除,这就相当于数据库的insert,update,select,delete。

为了统一操作方法,我们可以用一种特殊的风格来进行处理,这就是REST

完整的REST介绍涉及很多东西,也比较抽象,这里讨论基本的概念和实现方法。

虽然各种网站用不同的语言(PHP,ASP,JSP等等),但是一般都是用http协议进行传输,而且常用的两种数据操作方法是通用的:GET和POST。

这样一来,我们就获得了不同网站进行通讯的一个标准的方法,就是看发出请求的方法。我们可以把GET方法表示查询,POST表示新增。

GET一般是通过URL后面加上参数来传送(表单也可使用),POST一般用于表单。

那么修改和删除呢?其实还有两种发送请求的方法:PUT和DELETE,我们可以把PUT方法表示修改,DELETE表示删除。

先不考虑如何发送PUT和DELETE,我们有了通用的表达数据操作方法的统一方式:

操作方法传输方法
新增POST
查询GET
修改PUT
删除DELETE

有了标准,现在就可以去实践了。可是如果我是PHP网站,对方是ASP网站,我怎么和对方的程序员配合呢?

那么就只能抛开服务器语言,用web2.0时代的交流语言:AJAX

为了不离开正题太远,我不讨论一些问题,比如AJAX的跨域问题,同时也只使用最简单的AJAX代码。当然也不讨论XML的处理。

我们可以给他四个js代码(实际过程当然不会用那么傻的方式),处理四种数据操作方法。同时我们自己的网站也要加一些PHP代码。

1、查询数据:

javascrīpt代码:

<scrīpt language="Javascrīpt" type="text/Javascrīpt">

var requestObj = new XMLHTTPRequest();

//假设要查询的中国生产的mp3

var case = "from=china";

//注意这里的方法是GET,假设API的页面是mp3.php,我们把参数加在后面。

requestObj.open("GET", "mp3.php?"+case, true);

//对数据编码

requestObj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');

//定义查询数据传送回来的处理函数为process

requestObj.onreadystatechange = process;

requestObj.send(null);

</scrīpt>

PHP代码:

if($_SERVER['REQUEST_METHOD']=="GET")

{

/*

这个时候$_GET数组里面就有了$_GET["from"],

假设数据在数据库,我们就查询符合条件的参数,然后以xml格式输出。

如果不清楚PHP如何处理xml,可以参考我的xml栏目,里面有simpleXML用法介绍。

*/

}

2、新增数据

javascrīpt代码:

<scrīpt language="Javascrīpt" type="text/Javascrīpt">

var requestObj = new XMLHTTPRequest();

//假设用户id为59的用户,购买的产品id为213的东西

var newData = "userid=59&productid=213";

//注意这里的方法是POST,假设API的页面是mp3.php。

requestObj.open("POST", "mp3.php", true);

//对数据编码

requestObj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');

//注意发送数据newData

requestObj.send(newData);

</scrīpt>

PHP代码:

if($_SERVER['REQUEST_METHOD']=="POST")

{

/*

这个时候$_POST数组里面就有了发送过来的$_POST["userid"]和$_POST["productid"],

这时候我们就把数据插入数据库

*/

}

喘口气,继续写,有语音输入就好了


TAG: PHP ajax XML Ajax xml API REST AJAX

引用 删除 tangolivesky   /   2008-11-27 23:05:23
5
引用 删除 shimch   /   2008-05-11 13:43:08
看得明白
引用 删除 幸苦了..   /   2007-08-02 15:50:11
5
写得非常好谢谢.
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar