我现在的任务是将此应用程序开发为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参数也不允许?
谢谢.
编辑:
那么SWITCH语句是否会进入index.PHP文件?然后每个案例都会调用一个函数,即POST方法的CreateXML?
那么它需要的参数是对象类型,对象ID和内容类型?如何获取更新XML的值,是否只将其发送到包含输入框列表的Create.PHP文件?
RESTful服务只是做了一些事情:
>它使用HTTP请求方法进行CRUD操作的通信
>它使用HTTP状态代码来传达响应状态,以及
>它使用URI来定义您的资源(您正在访问的文件,数据库项等).
>这是无国籍的
我们的想法是尽量减少已经在HTTP规范中定义的这些东西的自定义通信的开发.
1 – 请求方法
> POST
> GET
> PUT
>删除
你可以选择支持
>补丁
>头
您可以将这些直接映射到CRUD操作,如下所示:
> POST =创建
> GET =检索
> PUT =更新
> DELETE =删除
> PATCH =编辑(部分更新,例如“更改密码”.PUT变为“替换”)
> HEAD =仅限标题(有关资源的元数据)
为此,请使用简单的请求方法路由器正确路由请求,如下所示:
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 – 状态代码
您应该进一步从服务中实现HTTP状态代码,以将状态传递回客户端,例如:
> 20x =成功
> 30x =重定向
> 40x =沟通问题
> 50x =服务器错误
要做到这一点,只需使用正确的HTTP标头输出前置您的响应,例如:
header("Status: 500 Internal Server Error");
您可以在此处引用已实施的HTTP状态代码的完整列表:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
3 – URI
对于URI,RESTful服务通常遵循自上而下的分类命名方法,例如,
/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 – 无状态
简单地说,服务器不为客户端维护“状态”.没有存储会话或状态的要求.每个请求代表一个完整的交易.即如果我获取用户/ 1,服务器将不记得我这样做了,未来的请求将不依赖于或受以前的请求影响.
如果您实施这些标准,恭喜,您已经构建了RESTful服务!