0

我正在寻找构建我的第一个 API,并且我对从 SOAP 到 RESTful API 的各种类型的 API 进行了大量研究。我决定使用带有 http 标头的 RESTful 方法,因为我认为它是最能满足我需求的方法。

在阅读了很多关于 RESTful API 方案的工作方式之后,我有一个问题希望有人能帮助我,这对我来说似乎是缺失的一块拼图。

我知道我通常会通过POST, GET,PUTDELETE特定的 URL 发送数据 -app/user/{userid}/{property}但我不明白它是如何在服务器端解释的。显然,对于各种用户来说,没有无穷无尽的目录,所以这是 htaccess 文件中的某种操作来捕获这些请求吗?有人可以解释一下这个问题吗?

谢谢!

4

2 回答 2

2

当然,没有什么可以阻止您维护庞大的目录结构,在 POST/PUT 上创建新文件和目录。但这会很麻烦且容易出错。

您需要一些服务器端技术。理想地构建时考虑了 REST。该技术/框架了解 URL 模式,能够将它们映射到控制器/处理程序/一些代码,并提取路径变量,如您的示例中的userid和。property

例如,在中,您有标准,允许您编写:

@Path("app/user/{userid}/{property}")
public class UserResource {

    @GET
    public String getUserProperty(
        @PathParam("userid") int userId, 
        @PathParam("property") String property
    ) {
            //...
    }
}

看看这个框架处理低级的东西有多好?每次您访问时GET app/user/42/salary,它都会为您提取42salary调用,并getUserProperty使用适当的参数进行调用。

像这样的框架的另一个优点是基于期望的自动编组/解组Content-type:该库将解组 JSON/XML,将对象传递给您的控制器方法并将返回的对象编组回某种表示形式。

于 2012-07-08T13:15:28.677 回答
0

您可以使用框架轻松定义路由。

例如,您可以在 php 中使用 silex,您可以使用它定义如下路由:

// index.php
require_once __DIR__.'/../vendor/autoload.php'; 

$app = new Silex\Application(); 

// If we stored users in an array ...
$users = array(
    1 => 'Adrien',
    2 => 'John',
);

$app->get('/users/{id}', function($id) use($app, $users) { 
    return $users[$id]; 
}); 

$app->run(); 

然后你就可以curl -X GET -i http://localhost/index.php/users/1

您可以在此处查看 silex 的文档http://silex.sensiolabs.org/

于 2012-07-08T13:16:58.907 回答