Я пытаюсь создать службу RESTful, и я столкнулся с некоторыми проблемами.Я опишу эти проблемы (вопросы) на примере воображаемого сервиса RESTful.
Например, мне нужен сервис "Новости" на моем сайте.Новости могут быть разных типов: местные новости и глобальные новости.Новости добавляются администратором.Пользователь может просматривать как локальные, так и глобальные новости (по отдельности или все вместе).Новости показаны по страницам.Пользователь может просматривать точные новости.
Итак, я построил такую таблицу глаголов для этой задачи:
GET /news - Get all news
POST /news - Create news
GET /news/{id} - Show the news with id={id}
PUT /news/{id} - Edit the news with id={id}
GET /news/{type}/{page}/{per_page} - Get news page #{page} of type {type}
GET /news/{page} - Get news page #{page} of both types
Итак, есть проблемы:
1) как различить {page} и {id}?возможно, {id} может быть только числом, но {страница} - строка, начинающаяся с 'p' (например, 'p1'}?
2). Пользователь может изменить значение "per_page" - сколько новостейпоказаны на странице.Разве это не слишком сложно - /news/{type}/{page}/{per_page}
?Как это можно упростить?
3) Как должны выглядеть URL в браузере на этих сервисах?URL не будут точными, как URI из таблицы выше?Например:
/news - Viewing news (1st page with default 'per_page' and default 'type')
/news/{type} - Viewing news (1st page with default 'per_page' and type={type})
/news/{id} - Viewing exact news with id={id}
/news/{type}/{page}/{per_page} - Viewing exact page of news of exact type.
4) Дополнительный функционал.Например, фильтр поиска (получение новостей по дате, автору или названию).Как реализовать это с REST?Как объект фильтра (XML или JSON) должен быть передан?Как сделать URL страницы с результатами фильтра?/news/{date:12.12.2012,author:'admin'}
или что-то лучше?
Извините за грубый английский, Если вы видите некоторые грамматические и другие ошибки - не стесняйтесь исправлять их.
Заранее спасибо.