JSONAPI должен URL-адрес конечной точки в точности соответствовать `типу 'ресурса
Я создаю jsonapi для своего веб-сайта, и, просматривая различные компоненты внешнего интерфейса, я наткнулся на https://github.com/dixieio/redux-json-api/tree/master/docs который, по-видимому, разрешает URL-адрес конечной точки непосредственно из тип ресурса
Является ли частью спецификации / рекомендаций точное разрешение конечной точки по типу ресурса? Я помню, как читал комментарий, объясняющий, что нет фактического type
соглашение об именовании.
Мой API имеет несколько конечных точек для регистрации разных типов пользователей.
/registration/admin
/registration/customer
etc.
Эти конечные точки имеют различную бизнес-логику, но все они возвращают user
Тип объекта.
Это плохой дизайн, когда несколько конечных точек возвращают один и тот же ресурс?
type
?Должен ли я внести изменения в свой код, чтобы ввести дополнительный тип, как
registration/user
?Или я должен отправить патч в библиотеку, чтобы он принимал пользовательские URL-адреса конечных точек?
1 ответ
Я не могу обратиться конкретно к используемой вами платформе, но у вас есть полная свобода выбора того, что представляют собой ваши HTTP-ресурсы. Если, например, клиенты могут быть корпоративными и иметь связанные счета и историю продаж, но администраторы являются только частными лицами и не могут осуществлять транзакции, вы можете убедительно обосновать необходимость разделения ресурсов.
Единственное, чего вам следует избегать, это разрешить программным ограничениям определять структуру вашего URI. Если бы я создавал этот API и решил, что клиенты и администраторы - это разные типы объектов, у меня были бы ресурсы формы регистрации в /admins/new и / Customers/new, которые бы делали POST-запросы к ресурсам коллекции в / admins. и / клиенты. У меня не было бы / регистрации * вообще.
Чтобы ответить на ваши индивидуальные вопросы:
Я не понимаю, что вы подразумеваете под "возвратом типа ресурса" - вы говорите о представлениях, возвращаемых в ответах, или о том, как внутренние функции создают и возвращают экземпляры класса?
Я бы не стал добавлять дополнительный супер-тип для всех видов пользователей. Либо есть одна коллекция для каждого типа, либо один тип для всех.
Если после рассмотрения всего вышеперечисленного и выбора требуемых URI ваше программное обеспечение не может обработать выбранную вами структуру, есть три варианта:
я) выбрать более способное программное обеспечение
ii) создайте отображение между входящим URI и URI, переданным вашему программному обеспечению. Apache mod_rewrite может сделать это для вас
iii) как вы предлагаете, сделать программное обеспечение, которое вы уже используете, более способным
Выберите самый простой вариант.