# Stocklist 認証とAPIの検証方法 ## Stocklistの認証の仕組み StocklistのAPIは[Sanctum](https://readouble.com/laravel/7.x/ja/sanctum.html)という認証用のパッケージを利用しています。 認証の仕組みとして、事前にユーザーと関連する一意で推測不能な文字列(Token)をデータベースに登録します。 認証時にはそのTokenをHTTPのヘッダーのAuthorizationにBearer Tokenの形式でTokenを送信します。 データベースに一致するTokenが存在すれば認証成功です。 ## Tokenについて 開発時に手動でTokenを生成するのは面倒なので、 推測可能なTokenをSeederでデータベースに挿入するようにしました。 そのため以下の方法で認証可能なTokenを推測することができます。 ``` 1|test-ユーザーのid ``` ### 例 UserのIdが2番の場合 ``` 1|test-2 ``` ## APIの検証方法 APIの主な検証方法として以下の3つが挙げられます。 1. ブラウザで確認する 2. PostmanやCURLで確認する 3. テストコードを書く 1番を使った方法ではプラグインなどを導入しないとできないので、今回は2番のPostman使った方法を紹介します。 ## Postmanとは APIを検証するためのツールで、ヘッダーの値やリクエストボディの値を細かく設定することができます。 ## Postmanの基本操作 HTTPのリクエストメソッドとURL、リクエストボディーやヘッダーを設定してSendを押します。  ## StocklistのAPIにリクエストを送信する ### ヘッダーを設定する LaravelはヘッダーのContent-Typeでボディの内容がJSONなのか、 フォームリクエストなのかを判定しています。 またAPIの場合はAcceptをapplication/jsonにする必要があります。  ### Tokenを設定する 認証をする場合は前述したTokenを設定する必要があります。 URLの入力欄の下のAuthタブを選択します。 次にTYPEをBearer Tokenします。 TokenのフィールドにTokenを入力します。 #### 例 tokenが1|test-100の場合  ### リクエストボディを設定する Bodyタブを選択します。 次にリクエストボディの形式を選択します。 リクエストボディの形式は基本的にはJSONで送信しますが、 ファイルなどを添付する場合はform-dataを選択します。 JSONはrawを選択し、JSONを直接入力します。  ### 実際にリクエストを送信する ```GET api/me```へリクエストを送信します。 ※事前にAPIサーバのmigrationとseederを実行してください。 ``` php artisan migrate:refresh --seed ``` AuthのBearer TokenにTokenを設定する。 RequestメソッドをGETにする。 URLを```http://サーバのURL:ポート/api/me```にする SENDをクリックする。 #### 認証先のソースコード ``` /** * 認証のサンプル */ Route::get('/me', function(Request $request){ return $request->user(); })->middleware('auth:sanctum'); ``` #### 成功時 成功すればBodyにユーザーデータがJSONで返ってきます。 ※環境により微妙に値などは異なります。  ## ステータスコード ステータスコードはHTTPの処理の結果を表します。 一般的には300番台がリダイレクト 200番台が成功 400番台はクライアントのリクエストに問題あり 500番台はサーバに問題があることを表します。 |コード|意味| |-|-| |200|成功、レスポンスあり| |201|成功、レスポンスボディなし| |401|認証エラー| |404|リソースは存在しません。| |500|サーバエラー|
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up