<rmcreative>

RSS

Все заметки с тегами «API, REST»

  1. Сортировка и фильтрация в REST API

    15 августа 2016

    Среди информации по построению REST API встречаются две рекомендации на тему сортировки и фильтрации. Сортировку делать вот так:

    GET /users?sort=-created_at,username
    

    Сортируем по убыванию по дате создания и по имени пользователя в алфавитном порядке.

    Фильтры делать вот так:

    GET /tickets?status=open&assignee=123
    

    Получаем открытые тикеты, назначенные на пользователя с ID=123.

    Вроде всё красиво, но что если у очередного ресурса появится поле sort? GET-параметр уже зарезервирован для сортировки, использовать его для фильтрации не получается. Выхода два: либо заставить пользователя никогда не использовать поле sort (а к нему со временем добавится like и ещё что-нибудь) либо ввести для фильтрации отдельный параметр filter. Значение лучше всего описать в формате JSON: не придётся заботиться о специальных правилах экранирования, да и поддержка его есть во всех клиентах.

    GET /tickets?filter={"status": "open", "assignee": 123}
    

    В случае отдельного параметра, хоть синтаксис и не настолько интуитивен, конфликт имён исключается.

    9 комментариев