Luracast Restler是否支持多部分URI?

时间:2011-11-09 12:05:14

标签: rest mapping uri

我最近使用Luracast Restler开始了一个项目。这似乎是一种设置REST API的非常简单有效的方法。使用非常少的代码,我能够为我的类别和产品资源提供CRUD服务。 我的GET方法如下所示:

class Categories
{
    function get($id=NULL) {
        if (isset($id))
            {
                // return category details for $id.
            }
            else
            {
                // return all categories.
            }
    }
}

class Products
{
    function get($id=NULL) {
        if (isset($id))
        {
            // return product details for $id.
        }
        else
        {
            // return all products.
        }
    }
}

客户可以使用以下方式获取“图书”类别的详细信息:     HTTP:API /类别/书籍

或所有类别使用:     HTTP:API /类别

同样的产品。一个产品:     HTTP:API /产品/ 123 所有产品:     HTTP:API /产品

到目前为止一切顺利。 现在我想要进一步参与一些事情。我想让我的客户访问某个类别的产品。 我希望我的URI是:     HTTP:API /类别//产品

E.g.
http:api/categories/books/products

从那里,我想提供:     HTTP:API /类别//产品/

E.g.
http:api/categories/books/products/123

这使我的客户能够使用渐进式链接从一种资源转移到另一种资源,我将其视为REST的核心原则。 但我无法通过Restler看到实现这一目标的方法。我已经看到一些提到用于指定URI映射的JavaDoc注释,所以我尝试了这个:

class Products
{
    /**
    * url GET /categories/:catId/products/:prodId
    */
    function get($catId=NULL, $prodId=NULL) {
        // Get product($prodId) of category($catId)
    }
}

但这不起作用。 Restler似乎没有从评论中获取任何信息;它隐式地根据类名和函数名创建URI路由。

有人可以帮忙吗?我错过了什么吗?任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

上面的示例中的一切都很好,除了一个简单错误阻止它工作之外,你想要实现的目标!

您的PHPDoc评论缺少@

按如下方式更改您的代码

<?php
class Products
{
    /**
    * @url GET /categories/:catId/products/:prodId
    */
    function get($catId=NULL, $prodId=NULL) {
        // Get product($prodId) of category($catId)
    }
}

另请查看相关问题 How do you organize Luracast Restler classes to create related route endpoints?