2

Я реализую этот API, и первое, что я сделал, это вход с токеном доступа. Я использую jsonapi-resources gem https://github.com/cerebris/jsonapi-resourcesJSONAPI лучший способ ответить на нересурсные данные, такие как токен доступа с jsonapi-ресурсами

У меня есть две проблемы сейчас. Я хочу вернуть пользователя И генерируемый токен доступа в случае успеха и сообщение об ошибке в противном случае.

Теперь у меня две проблемы:

1- Первый, как я могу вернуть этот вид данных (запись пользователя плюс маркер доступа). Читая спецификацию JSONAPI, я считаю, что compound document - это путь, но как я могу это сделать с помощью этого драгоценного камня.

2 Как я могу ответить, с этим камнем, на не-CRUD-маршрут, например, на логин? Должен ли я что-то делать в контроллере? И как я могу обрабатывать объект ресурса в этом случае?

+0

Два вопроса - 1.) почему вы хотите вернуть токен доступа, когда вы запрашиваете пользователей (вы должны иметь это где-то на стороне клиента) и 2.), что вы используете для аутентификации (то есть, OAuth и т. Д.)? – jeffdill2

ответ

1

Нет такой информации, как данные, не связанные с ресурсами. Вы можете моделировать практически все с точки зрения ресурсов.

Эти ресурсы не обязательно должны отображаться непосредственно в таблицах или даже существуют как идентифицируемые объекты в вашем уровне персистентности. С точки зрения потребителя api в основном не имеет значения, является ли представление ресурсов фактической базой данных или документом или полностью абстрактным объектом, созданным по требованию.

Реализация абстрактных ресурсов с использованием JR прост и поддерживается out of the box:

Аннотация Ресурсы

ресурсы, которые не подкреплены моделью (используется исключительно в качестве базовых классов для других ресурсов) должны быть объявлены как абстрактное.

Поскольку абстрактные ресурсы не ожидают поддержки модели, они не будут пытаться обнаружить класс модели или любые ее отношения.

Теперь, возвращаясь к вашим прецедентами:

  1. Это может быть смоделированы в качестве ресурса AuthToken (с одного атрибута), который связан с (многие к одному ассоциации) Пользователь ресурс. И в вашем случае может случиться, что ваш ресурс пользователя включен вместе с ресурсом AuthToken в тот же ответ API.

  2. Опять же, если вы моделируете весь свой домен вокруг ресурсов, любые действия могут быть смоделированы как действия CRUD. Вход - это просто создание ресурса UserSession.

JSON: спецификация API allows включение соответствующих ресурсов:

Включение соответствующих ресурсов

конечная точка может возвратить ресурсы, связанные с первичными данными по умолчанию.

Конечная точка МОЖЕТ также поддерживать параметр запроса включения, чтобы клиент настраивал, какие связанные ресурсы должны быть возвращены.

И это свойство fully supported от JR.