用PHP创建RESTful API?

前端之家收集整理的这篇文章主要介绍了用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参数也不允许?

谢谢.

编辑:
那么SWITCH语句是否会进入index.PHP文件?然后每个案例都会调用一个函数,即POST方法的CreateXML?
那么它需要的参数是对象类型,对象ID和内容类型?如何获取更新XML的值,是否只将其发送到包含输入框列表的Create.PHP文件

如果您的服务支持所有CRUD操作,则始终建议实现RESTful接口.这样做并不是很难.我已经概述了下面的一些基础知识.

RESTful服务只是做了一些事情:

>它使用HTTP请求方法进行CRUD操作的通信
>它使用HTTP状态代码来传达响应状态,以及
>它使用URI来定义您的资源(您正在访问的文件,数据库项等).
>这是无国籍的

我们的想法是尽量减少已经在HTTP规范中定义的这些东西的自定义通信的开发.

1 – 请求方法

您需要为RESTful服务支持的4种HTTP请求方法是:

> 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服务!

猜你在找的PHP相关文章