😊

【Django】Pythonで作るRest API【22Token Views】

2023/02/09に公開

【22Token Views】

YouTube: https://youtu.be/JnDJt2kCAtE

https://youtu.be/JnDJt2kCAtE

今回は前回実装しなかった「url.py」の設定部分について解説します。

https://django-rest-framework-simplejwt.readthedocs.io/en/latest/getting_started.html#project-configuration

まずは「myapp」の「url.py」に上記のビューとパスを追加します。

こちらは今回「myapp」に追加していますが、
「accounts」の方に設定しても大丈夫です。

myapp/myapp/urls.py
"""myapp URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/4.0/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, include
from rest_framework_simplejwt.views import (
    TokenObtainPairView,
    TokenRefreshView,
    TokenVerifyView
)

urlpatterns = [
    path('admin/', admin.site.urls),
    path('posts/', include('posts.urls')),
    path('accounts/', include('accounts.urls')),
    path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
    path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
    path('api/token/verify/', TokenVerifyView.as_view(), name='token_verify'),
]

こちらの設定ができましたら、
ローカルサーバーを起動してそれぞれのビューの確認を行います。

まずは

http://localhost:8000/api/token/

こちらにアクセスして、
ユーザー名とパスワードを入力して
トークンを取得します。

こちらのビューはログインビューとして使用します。

トークンが取得できましたら、リフレッシュトークンをコピーします。

次に

http://localhost:8000/api/token/refresh/

こちらにアクセスして、トークンのリフレッシュをしてみましょう。
フォームのにコピーしたリフレッシュトークンを入力します。

アクセストークンが有効期限切れや他の理由で使用できない際に
こちらのリフレッシュで新たにトークンを取得することができます。

トークンリフレッシュができましたら、
アクセストークンをコピーしましょう。

最後に

http://localhost:8000/api/token/verify/

こちらにアクセスしてトークンが有効かチェックをしてみましょう。

トークンが有効であれば、
ステータスの200番が返ってきます。

例えば200番以外のステータスの場合、
フロントエンド側ではトークンを削除して、ログアウト等の処理を実行します。

Discussion