Поддерживает ли Luracast Restler составные URI? - PullRequest
1 голос
/ 09 ноября 2011

Я недавно начал проект с использованием 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: апи / категории // продукты

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

и оттуда я хочу предложить: HTTP: апи / категория // Продукция /

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

Это дает моему клиенту возможность переходить с одного ресурса на другой, используя прогрессивную серию ссылок, которые я рассматриваю как основной принцип REST. Но я не вижу способа добиться этого с Рестлером. Я видел некоторые упоминания о комментариях JavaDoc, используемых для определения сопоставления URI, поэтому я попробовал это:

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

Но это не работает. Рестлер, похоже, не берет никакой информации из комментария; он неявно создает маршрут URI на основе имени класса и имени функции.

Может кто-нибудь помочь? Я что-то пропустил? Любой совет будет высоко ценится.

1 Ответ

1 голос
/ 18 ноября 2011

В приведенном выше примере все в порядке, и вы пытаетесь достичь, кроме одной простой ошибки , которая помешала его работе!

Ваш комментарий к PHPDoc отсутствует @

Измените свой код следующим образом

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

Также взгляните на связанный вопрос Как вы организуете классы Luracast Restler для создания связанных конечных точек маршрута?

...