@imagance

Вопросы по REST API?

Здравствуйте, мой вопрос скорее всего глупый и я плохо искал ответы, но скажите:
1. для передачи json в api обязательно использовать ссылку на страницу с json или как то можно передать json прямо в html. Напрмер:
не так
api - json
test - html страница,

а что бы было так
test - json и html страница

2. Например у роли админа есть кнопка, которая должна отображаться, а у простого пользователя не должна отображаться как по REST это должно быть реализовано? То есть клиент делает запрос на роль к бэкенду и и затем в зависимости от ответа показать или спрятать кнопку через display: block/none.

3. Как правильно должна осуществляться проверка авторизации пользователя? Я слышал, что в бд должно создаваться поле, где хранится токен авторизации и удалятся если запроса на токен давно не было. Но что если использовать сессии? Это сильно нарушит REST?

4. Как сделать защиту csrf в api?

Извините, что отнимаю ваше время такими глупыми вопросами, но я не могу найти подробную и понятную информацию на эту тему.
  • Вопрос задан
  • 335 просмотров
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Во-первых, REST - это не стандарт, не строгие правила, это рекомендации.
Вся суть этих рекомендаций сводится к двум вещам:
- Каждый ресурс (документ, данные о сущности) имеет свой собственный URI
- Для каждого действия с ресурсом предлагается в соответствие свой HTTP метод запроса

Теперь по вопросам:
1. Если данные json и html - это просто разные представления одного ресурса, то они вполне могут жить на одном URI. Например разное представление отдается в зависимости от HTTP заголовка Accept.
2. REST никак не регламентирует, как Вам строить приложение. Это может быть отдельный запрос к сущности "роль" или быть частью сущности "пользователь", решать Вам.
3. Опять же, REST тут вообще не причем. В REST нет никаких БД, сессий или еще чего либо, что Вы там под капотом используете инкапсулировано от клиента.
4. CSRF делается как и в любом другом случае. Вот статья есть: https://habr.com/ru/post/318748/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы