用PHP创建RESTful API?
我开发了一个非常快速和简单的
PHP应用程序,用于从XML文件中读取分类广告,并允许用户对其执行CRUD操作(这是一项家庭作业).
我现在的任务是将此应用程序开发为RESTful服务.教授实际上似乎没有任何RESTful服务的经验,因为他说我的应用程序被发现接下来的任务,当我的研究表明它并没有真正满足所有RESTful要求. 无论如何,我想为学习目的正确地做这件事,即使我可以交出我的旧任务并获得好成绩.我在学习从哪里开始时遇到了麻烦;我不确定RESTful服务究竟是什么. 我认为获得建议的最佳方式是发布我之前作业中的示例代码,以了解我如何处理事情以及我需要如何处理事情. 例如,以下是我创建新分类的方法. Create.php //Basically just a list of <INPUT TYPE = "text" NAME = "something"> in the <body> fields CreateSuccess.php <html><head><?php $simplerXML = simplexml_load_file('file.xml'); //Generate the basic ad information $newAd = $simplerXML->addChild('advertisement',''); $newAd->addAttribute('category',$_POST["category"]); $title = $newAd->addChild('title',$_POST["title"]); $title->addAttribute('ID',$_POST["ID"]); $pageTitle = $newAd->addChild('pagetitle',$_POST["pagetitle"]); //etc,for all the SUBMIT boxes //save the XML $simplerXML->asXML('file.xml'); echo "<script type='text/javascript'> //redirect back to ad listing page window.onload = function () { top.location.href = 'ads.php'; }; </script>"; ?></head> <body></body></html> 我也在使用URL参数进行RUD操作.我听说过URL参数也不允许? 谢谢. 编辑:
如果您的服务支持所有CRUD操作,则始终建议实现RESTful接口.这样做并不是很难.我已经概述了下面的一些基础知识.
RESTful服务只是做了一些事情: >它使用HTTP请求方法进行CRUD操作的通信 我们的想法是尽量减少已经在HTTP规范中定义的这些东西的自定义通信的开发. 1 – 请求方法 您需要为RESTful服务支持的4种HTTP请求方法是: > POST 你可以选择支持 >补丁 您可以将这些直接映射到CRUD操作,如下所示: > POST =创建 为此,请使用简单的请求方法路由器正确路由请求,如下所示: switch ($_SERVER["REQUEST_METHOD"]) { case "POST": // Create action break; case "GET": // Retrieve action break; case "PUT": // Update action break; case "DELETE": // Delete action break; } 2 – 状态代码 > 20x =成功 要做到这一点,只需使用正确的HTTP标头输出前置您的响应,例如: header("Status: 500 Internal Server Error"); 您可以在此处引用已实施的HTTP状态代码的完整列表:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html 3 – URI /object_type/id.content_type 例子: POST /user PUT /user/1 GET /user/1.json GET /user/1.html 您可以在.htaccess文件中使用带有mod_rewrite的Apache为上述约定实现一个非常基本的RESTful路由器,如下所示: RewriteEngine On RewriteRule ^([^/]+)/([^.]+).(w+)$ index.php?object_type=$1&object_id=$2&content_type=$3 然后你将有index.php寻找适当的object_type和id来适当地路由,例如: $object = $_GET["object_type"]; $id = (int) $_GET["object_id"]; $content_type = $_GET["content_type"]; // Route from here to a class with the name of the object (e.g. UserController) via __autoload // or to a file (e.g. user.php) via include,and pass id and content_type as params 4 – 无状态 如果您实施这些标准,恭喜,您已经构建了RESTful服务! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |