Как протестировать REST API с помощью расширения Chrome «Advanced Rest Client»


89

Следуя инструкциям по приведенной ниже ссылке, я успешно создал REST API для своего приложения Django: http://django-rest-framework.org/tutorial/quickstart .

Я могу проверить это, выполнив в командной строке Unix следующее:

curl -H 'Accept: application/json; indent=4' -u root:myPassword http://www.myWebsite.com/users/

Оно работает :)

Однако я хотел бы использовать расширение Advanced Rest Client для Chrome, чтобы проверить эту же функциональность. Я установил расширение, но не знаю, где и как разместить поля. Когда я делаю обоснованное предположение (как вы можете видеть на скриншоте), он отвергает его, говоря: «Учетные данные для аутентификации не предоставлены».

снимок экрана с ошибкой запроса

Как / где мне указать свои параметры для REST API?

Ответы:


99

Обнаруживаемость мрачна, но довольно умно то, как Advanced Rest Client обрабатывает базовую аутентификацию. Упомянутый Авраам ярлык не сработал для меня, но немного покопавшись, показал, как он это делает.

Первое, что вам нужно сделать, это добавить Authorizationзаголовок: меню

Затем, когда вы фокусируетесь на valueвводе , всплывает изящная мелочь (обратите внимание на поле «построить» в правом нижнем углу): построить значение auth

Щелчок по нему вызовет окно. Если хотите, он даже поддерживает OAuth! удобные входы

Тада! Если вы оставите поле значения пустым, когда вы нажмете «построить», он добавит Basicк нему часть (я предполагаю, что он также добавит необходимый материал OAuth, но я не пробовал этого, поскольку мои текущие потребности были для базовых аутентификация), поэтому ничего делать не нужно. заполняет поля по мере необходимости


Для базовой аутентификации - youtube.com/watch?v=1SP1hgm9JqA . На вкладке «Форма заголовков» добавьте заголовок «Авторизация». Когда вы начнете печатать, он предложит автоматически. В значении нажмите кнопку «Изменить» (карандаш) и введите во всплывающем окне учетные данные для авторизации.
uutsav

10

На скриншоте видно, что вы хотите передать сервису значения «пользователь» и «пароль». Вы отправили значения параметров в части заголовка запроса, что неверно. Значения отправляются в теле запроса, а не в заголовке запроса. Также ваш синтаксис неверен. Правильный синтаксис: {"user":"user_val","password":"password_val"}. также проверьте тип содержимого. Он должен соответствовать типу контента, который вы установили для своей службы.


7

Это кажется очень старым вопросом, но я даю ответ, чтобы он мог помочь другим. Вы можете указать переменные на втором экране в разделе формы, как показано ниже, или в формате RAW, добавив переменные, как показано на втором изображении.

Укажите переменные формы

Укажите в формате RAW

Если ваши переменные и значения переменных действительны, вы должны увидеть успешный ответ в разделе ответов.


что, если это запрос GET?
Dejell

Мне пришлось явно установить заголовок Content-Type со значением: application / x-www-form-urlencoded
shasi kanth

6

Для базовой аутентификации обычно используется формат ярлыков http://username:password@example.com/path. Вы также захотите включить в запрос заголовок accept.

введите описание изображения здесь


Спасибо. Я получил ответ, в котором было следующее: <p> Ошибка проверки CSRF. Запрос прерван. </p> Как мне обойти это?
Сакиб Али

Похоже, вы не попадаете в конечную точку API, а вместо этого попадаете в конечную точку, которую должен выполнить JavaScript.
Авраам

Обычно это прекрасное решение - если ваш UID или PWD не содержат символы «:» или «@».
Blamkin86

Возможно, вам придется URL-кодировать имя пользователя / пароль, если они содержат зарезервированные символы.
Авраам

Я пытался использовать ваше решение для команды GET на HTTPS, но это не сработало. например, пользователь: @ api.com / v2 / shippingments Он работает в curl. что не так? нет пароля
Dejell

3

в разделе заголовка нужно написать

Авторизация: Базовая aG9sY67890vbGNpbQ ==

где строка после базового - это 64-битное значение кодировки вашего имени пользователя: пароль. php для получения значений заголовков: echo "Авторизация: Базовая". base64_encode ("myUser: myPassword");

nb: Я предполагал, что ваш метод аутентификации является основным. которые тоже могут быть разными.


Вопрос конкретно касается того, как это сделать в расширении Advanced Rest Client для Chrome.
Shauna

Ответ Шоны был правильным и должен быть принятым ответом, но этот комментарий от Шарифа также полезен для тех, кому интересно узнать, что сделал клиент Chrome Advanced Rest для кодирования пользователя и пароля для вас. Спасибо.
Deemoe

3

Добавьте заголовок авторизации и нажмите кнопку карандаша, чтобы ввести имя пользователя и пароли.

введите описание изображения здесь


0

Самый простой способ решить эту проблему с аутентификацией - украсть токен аутентификации с помощью Fiddler.

Шаги

  1. Запустите скрипач и браузер.
  2. Перейдите в браузер, чтобы открыть веб-приложение (веб-сайт) и выполнить необходимую аутентификацию.
  3. Откройте Fiddler и щелкните запрос HTTP 200 HTML-страницы. Захват значения cookie с помощью Fiddler
  4. На правой панели из заголовков запроса скопируйте значение параметра заголовка cookie. введите описание изображения здесь
  5. Откройте клиент REST, щелкните вкладку «Форма заголовка» и введите значение cookie из буфера обмена.

Нажмите кнопку ОТПРАВИТЬ, и он получит результаты.


0

В последней версии запроса ARC для GET с аутентификацией необходимо добавить необработанный заголовок с именем Authorization: authtoken.

Пожалуйста, найдите снимок экрана Получить запрос с параметрами аутентификации и запроса

Чтобы добавить параметр запроса, щелкните стрелку раскрывающегося списка в левой части поля URL.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.