2015-04-07 2 views
0

У меня есть REST API, и я хочу создать метод, который принимает имя пользователя и пароль, удостоверяется, что они действительны и возвращает ресурс пользователя.Метод REST для проверки учетных данных

Это НЕ проверяет пользователей API REST. Пользователи являются частью отдельной системы, и API управляет ими.

Какой метод и URL-адрес подходят для этого?

GET не кажется хорошей идеей, так как он помещает пароль в строку запроса. Кроме того, этот метод может обновить дату последнего входа пользователя, поэтому он не является идемпотентным.

Я мог бы использовать PUT, но я использую это, чтобы обновить пользователя. Поэтому я мог бы использовать другой URL-адрес, но для чего это был бы подходящий URL-адрес? Что-то вроде /user/credentials может означать, что вы обновляете учетные данные, а не проверяете их.

ответ

2

Способ, которым я обычно обрабатываю это, выполняя запрос POST, например, /user/login или просто /login.

Вы в основном создаете попытку входа в систему, поэтому POST звучит разумно, так же, как вы можете POST a search request.

Посредством этого вы позволяете себе вводить учетные данные для входа в тело POST, поэтому они не отображаются в URL-адресе. И вы не обновляете пользовательский ресурс, поэтому вам не нужно использовать PUT.

Пример

POST http://example.com/login HTTP/1.1 
{ 
    "username": "Jon Skeet", 
    "password": "SOiscool" 
} 
+0

ОК, я могу купить «логин» как существительное. –

1

Вы POST ИНГ тот факт, что пользователь нуждается в «пользовательский ресурс» использовать «в отдельную систему». POST - единственный глагол, который является appropriate when a method isn't idempotent.

Если «отдельная система» - единственная возможная система, к которой пользователь когда-либо войдет в систему, я бы выбрал простой URL-адрес, например /user/login. В противном случае я бы добавил сегмент пути для «отношения пользователя к« отдельной системе », например /user/theSeperateSystem/login.

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