Chromeの拡張機能「Advanced Rest Client」を使用してREST APIをテストする方法


89

以下のリンクの指示に従って、Djangoアプリケーション用のREST APIを正常に構築しました:http : //django-rest-framework.org/tutorial/quickstart

Unixプロンプトから次のようにしてテストできます。

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

できます :)

ただし、Chrome拡張機能のAdvanced Rest Clientを使用して、同じ機能をテストしたいと思います。拡張機能をインストールしましたが、フィールドの配置場所や方法がわかりません。(スクリーンショットに表示されているように)知識に基づいた推測をすると、「認証資格情報が提供されなかった」というメッセージが表示されて拒否されます

失敗したリクエストのスクリーンショット

REST APIにパラメーターをどのように/どこに指定すればよいですか?

回答:


99

発見のしやすさは悲惨ですが、Advanced Rest Clientが基本認証を処理する方法は非常に巧妙です。言及されたショートカットのアブラハムは私にとってはうまくいきませんでしたが、少しつついてみると、それがどのように機能するかが明らかになりました。

最初に行う必要があるのは、Authorizationヘッダーを追加することです。 メニュー

次に、value入力にフォーカスすると、気の利いた小さなものがポップアップ表示されます(右下の「構成」ボックスに注意してください)。 認証値を構築する

それをクリックするとボックスが表示されます。必要に応じて、OAuthも実行します。 便利な入力

多田!「構築」をクリックしたときに値フィールドを空白のままにすると、Basicパーツが追加されます(必要なOAuthも追加されると思いますが、現在のニーズは基本的なものでしたので、試しませんでした認証)なので、何もする必要はありません。 必要に応じてフィールドに入力します


基本認証の場合-youtube.com/watch?v=1SP1hgm9JqA。「Headers form」タブで、ヘッダー「Authorization」を追加します。入力を開始すると、自動的に提案されます。値で、[編集](鉛筆)ボタンをクリックし、ポップアップに認証情報を入力します。
uutsav 2017年

10

スクリーンショットから、「ユーザー」と「パスワード」の値をサービスに渡したいことがわかります。リクエストヘッダーパートでパラメーター値を送信していますが、これは誤りです。値は、要求ヘッダーではなく、要求本文で送信されます。また、構文が間違っています。正しい構文は次のとおりです{"user":"user_val","password":"password_val"}. 。コンテンツタイプを確認します。サービスに設定したコンテンツタイプと一致する必要があります。


7

これは非常に古い質問のようですが、他の人を助けるために、答えを提供しています。2番目の画面でフォームセクションの変数を指定するか、2番目の画像に示すように変数を追加してRAW形式で指定できます。

フォーム変数を指定する

RAW形式で指定

変数と変数値が有効な場合は、応答セクションに正常な応答が表示されます。


GETリクエストの場合はどうなりますか?
デジェル

次の値で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 2015年

予約文字が含まれている場合は、ユーザー名/パスワードをURLエンコードする必要がある場合があります。
アブラハム、2015年

HTTPSでGETコマンドのソリューションを使用しようとしましたが、機能しませんでした。例user:@ api.com / v2 / shipments curlで動作します。なにが問題ですか?パスワードはありません
デジェル

3

ヘッダーセクションに記述する必要があります

承認:基本的なaG9sY67890vbGNpbQ ==

ここで、基本の後の文字列は、ユーザー名:パスワードの64ビットのエンコード値です。ヘッダー値を取得するphpの例は次のとおりです:echo "Authorization:Basic"。base64_encode( "myUser:myPassword");

nb:私はあなたの認証方法を基本的なものと想定しました。異なる場合もあります。


この質問では、特にChrome拡張機能のAdvanced Rest Clientでそれを行う方法について尋ねています。
Shauna 2014年

Shaunaの答えは正解であり、受け入れられた答えであるはずですが、sharifからのこのコメントは、ユーザーとパスワードをエンコードするためにChrome Advanced Restクライアントが何を行ったかを知りたい人にも役立ちます。ありがとう。
Deemoe


0

この認証の問題を回避する簡単な方法は、Fiddlerを使用して認証トークンを盗むことです。

手順

  1. バイオリン弾きとブラウザを起動します。
  2. ブラウザに移動してWebアプリケーション(Webサイト)を開き、必要な認証を行います。
  3. Fiddlerを開き、HTTP 200 HTMLページ要求をクリックします。 Fiddlerを使用したCookie値のキャプチャ
  4. 右側のウィンドウで、要求ヘッダーからCookieヘッダーのパラメーター値をコピーします。 ここに画像の説明を入力してください
  5. RESTクライアントを開き、[ヘッダーフォーム]タブをクリックして、クリップボードからのCookie値を提供します。

[送信]ボタンをクリックすると、結果が取得されます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.