2014-09-23 2 views
0

У меня есть ресурс, называемый пользователем и подресурсом, называемым изображениями. Чтобы получить доступ к определенному изображению, единственный способ сделать это - использовать URL:/users/{userId}/images/{imageId}.Проверка входных данных, представляющих ресурсы и под-ресурсы в REST

Схема базы данных такова, что один пользователь может иметь несколько изображений.

Клиент отправляет нам ввод для «{userId}» и «{imageId}». Я должен был бы утвердить эти данные. Мой вопрос связан с проверкой ввода «{imageId}». У меня есть два варианта:

Вариант 1: Проверить, принадлежит ли определенное изображениеId к этому userId. Если я не вижу изображений для данного userId, то выдайте ошибку «Нет изображения для данного userId».

Вариант 2: Проверить, существует ли изображение с заданным «{imageId}». Выбросьте ошибку, говоря: «Изображение с данным изображением не существует». Затем снова проверьте (еще один проверочный код DB), если данный «{imageId}» принадлежит к этому «{userId}».

Из двух вариантов выше, какой вариант является правильным подходом?

ответ

1

У меня есть ресурс, называемый пользователем и подресурсом, называемым изображениями. К доступ к определенному изображению, единственный способ сделать это - использовать URL-адрес: /users/{userId}/images/{imageId}. Схема базы данных такова, что один пользователь может иметь несколько изображений.

Я думаю, вы поняли ограничения структуры URI отдыхайте:

Там нет ограничений о том, как построить URI.

Вы можете использовать свои собственные соглашения, это не имеет значения, потому что клиенты отделены от структур URI ... Например, я могу сказать, что мои изображения находятся под /images/{imageId}. Это совершенно верно ...

Вам не нужно отображать ресурсы для сущностей, а сложными приложениями вы не сможете этого сделать.

Из двух вариантов выше, какой вариант является правильным подходом?

Вы можете отправить обратно 404 с сообщением, что в URI нет ресурса. Сообщения об ошибках в структуре URI ничего не означают для клиента. URI непрозрачны для клиента.

+0

Благодарим вас за ответ. Я понимаю, что я могу представить изображение как «/ images/{imageId}». Я специально хотел подчеркнуть тот факт, что по какой-то причине клиент не может получить доступ к изображению, если только URL-адрес: «/ users/userId/images/imageId», и это не может быть изменено, так как это уже настроено. Основываясь на вашем ответе, я думаю, вы просите меня принять вариант 1. Спасибо – user2608424

Смежные вопросы