djangoでAdvancedRestClientを使ってログインした状態としてAPIを叩いてみる

djangoでAdvancedRestClientを使ってログインした状態としてAPIを叩いてみる

アプリからではなくクライアントソフトからAPIを叩いてみたいと思います。djangoでログインした状態としてAPIを叩く方法を備忘録として残しておきたいと思います。

クライアントソフト

chromeの拡張機能でAdvancedRestClientと言うクライアントソフトがあるみたいです。今回ログイン状態にするためにcookieをセットいたしますがGETやPOST等のパラメータやjsonをbodyに含めたりと色々出来るみたいです。

プログラム

以前の記事で書いたコードを使ってみたいと思います。
ログイン状態ではないとアクセスできないデコレータ@login_requiredを付与します。このAPIを叩いてみたいと思います。


from django.contrib.auth.decorators import login_required
...
@login_required
def get_writers(request):
    response_data = {
        "message": "hello_writers",
        "writers": [],
    }
    objs = Writer.objects.all()
    for obj in objs:
        response_data["writers"].append(to_dict(obj))

    return JsonResponse(response_data)

トークンを確認する

下記の操作の手順でトークンを確認します。
1.作ったアプリにログインする。
2.chromeDevelopperToolを開く。
3.上部のApplicationタブをクリックする。
4.左のCookiesを展開する。
5.http://...をクリックする。
6.sessionidとcsrftokenの値をコピーする。

APIを叩く

下記の操作の手順でAPIを叩きます。
1.AdvancedRestClientを立ち上げる。
2.「Mehod」に任意の送信方法を選択する。(今回はGET)
3.「Request」 URLにURLを設定する。
4.「Headers」のタブをクリックする。
5.「Header name」をクリックし「Cookie」を選択する。
6.右の方にある鉛筆マークをクリックする。
7.ウィンドウが表示されるので「Cookie name」と「Cookie Value」設定する。(「Cooie Value」はchromeDevelopperToolで確認した値)
8.「ACCEPT」をクリックする。
9.「SEND」をクリックする。

実行結果

ログインが必要なAPIをクライアントソフトから叩き、下記の通り無事結果を取得できました。

関連のある映画