---
# System prepended metadata

title: Stocklist 認証とAPIの検証方法

---

# 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の主な検証方法として以下の３つが挙げられます。
1. ブラウザで確認する
2. PostmanやCURLで確認する
3. テストコードを書く

１番を使った方法ではプラグインなどを導入しないとできないので、今回は２番のPostman使った方法を紹介します。

## Postmanとは
APIを検証するためのツールで、ヘッダーの値やリクエストボディの値を細かく設定することができます。  


## Postmanの基本操作
HTTPのリクエストメソッドとURL、リクエストボディーやヘッダーを設定してSendを押します。
![](https://i.imgur.com/w7kzJUZ.png)


## StocklistのAPIにリクエストを送信する

### ヘッダーを設定する
LaravelはヘッダーのContent-Typeでボディの内容がJSONなのか、  
フォームリクエストなのかを判定しています。  
またAPIの場合はAcceptをapplication/jsonにする必要があります。
![](https://i.imgur.com/YrcjpFm.png)


### Tokenを設定する
認証をする場合は前述したTokenを設定する必要があります。  
URLの入力欄の下のAuthタブを選択します。  
次にTYPEをBearer Tokenします。  
TokenのフィールドにTokenを入力します。  

#### 例
tokenが1|test-100の場合

![](https://i.imgur.com/MsLpxbS.png)


### リクエストボディを設定する
Bodyタブを選択します。  
次にリクエストボディの形式を選択します。  
リクエストボディの形式は基本的にはJSONで送信しますが、  
ファイルなどを添付する場合はform-dataを選択します。  
JSONはrawを選択し、JSONを直接入力します。  
![](https://i.imgur.com/D3dzNUT.png)

### 実際にリクエストを送信する
```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で返ってきます。  
※環境により微妙に値などは異なります。
![](https://i.imgur.com/5LxNWKI.png)


## ステータスコード
ステータスコードはHTTPの処理の結果を表します。  
一般的には300番台がリダイレクト
200番台が成功
400番台はクライアントのリクエストに問題あり
500番台はサーバに問題があることを表します。
|コード|意味|
|-|-|
|200|成功、レスポンスあり|
|201|成功、レスポンスボディなし|
|401|認証エラー|
|404|リソースは存在しません。|
|500|サーバエラー|

