2013-09-11 4 views
1

Я использую Laravel для создания моего API, который обладает потрясающими способностями маршрутизации.Are/me и перенаправляет хорошую идею в API?

Я хочу поддерживать везде, где может быть передан идентификатор пользователя, позволяющий передавать «я», что означает представлять пользователя, представляющий токен.

E.g.

/users/1234     => /users/me 
/competitions?user=1234  => /competitions?user=me 
/users/1234/threads/comments => /users/me/threads/comments 

Для строки запроса я обработает, что внутренне заменив «меня» с Auth::user()->id, но для маршрутов, где «я» является частью пути я имею в виду захватить эти маршруты, заменив «меня» с выходом от Auth::user()->id, а затем сделать перенаправление 3xx на измененный маршрут.

Так что два вопроса здесь.

1) Является ли это приемлемой/хорошей идеей или я должен иметь конкретную конечную точку/users/currentUserInformation, чтобы клиент мог захватить текущий идентификатор пользователей, а затем они отвечают за построение URL-адресов с идентификатором, возвращаемым с этого ответа в?

2) Какой код 3xx соответствует требованиям? Это не «Вы должны запросить эту информацию здесь вместо этого», это просто «Информация, которую вы хотите, на самом деле пришла отсюда, но также жизнеспособна для получения этой информации» (эквивалент кеша).

ответ

1

1) Если клиенту пришлось пройти аутентификацию, то они уже должны знать текущего пользователя. Я не уверен, почему вы чувствуете необходимость отслеживать это и отдавать им обратно, или предоставлять волшебный ярлык, который его просматривает. Если вы действительно хотите это сделать, я бы предложил отдельный ресурс для текущего пользователя, прошедшего проверку подлинности.

2) Похоже, 300 множественных выборов находятся так близко, как вы собираетесь. Или, возможно, другое. То, что вы описываете, звучит очень много, как наличие нескольких канонических представлений для ресурса, который считается не-RESTful.

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