API テストツール　検索

### VScodeでリクエストを送信してレスポンスを確認する方法

https://zenn.dev/protoout/articles/26-vscode-rest-client

https://qiita.com/toshi0607/items/c4440d3fbfa72eac840c

![スクリーンショット 2024-01-14 18.03.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/627182/1b6736fd-c134-9246-eb7a-7d116eb1baec.png)

VSCode上で簡単にAPIレスポンスを確認できる
実行する際は「Send Request」を押すだけ


![スクリーンショット 2024-01-14 18.11.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/627182/a4992c18-4e97-2991-3cfe-e1e42ab1fa29.png)

一つのファイルで複数のリクエストを作成して個別に実行することもできるし
右上からレスポンスのフルパスを保存することもbodyだけを保存することもできる

### 認証を通す？

https://qiita.com/ikuzim/items/c4dd7231bc78e7adf0a5

API開発しているときに重宝しているREST Clientだが、認証通さないといけない時に、ログインしてToken取得してから各API叩いて確認するのが面倒。
その時に便利なのが、この機能。 らしい。。よくわかってない


### APIについての事前情報
APIはクライアントが
・リクエストヘッダー
・ボディー
・クエリパラメータ
を渡して利用しないといけないらしい

リクエストヘッダーとは　リクエストのヘッダーのことで
リクエストの詳細情報をサーバーに伝えるもの

APIリクエストヘッダーは主に下記のような情報をサーバに渡すことができる
```python
# クライアントの情報
User-Agent #- クライアントのソフトウェア名やバージョン
Accept-Language #- クライアントの使用言語設定

# リクエストのメタデータ
Content-Type #- リクエストボディのデータ形式
Content-Length #- リクエストボディの長さ

# 認証/認可情報
Authorization #- 認証トークンやAPIキー等
Cookie #- セッション管理に使用するCookie

# APIの指定
Accept #- 受け入れ可能なレスポンスのデータ形式
API-Version #- 使用したいAPIのバージョン

#その他
Cache-Control #- キャッシュ指示
If-Modified-Since #- 最終更新日時の指定
```


### Authorization(認証について)
認証方法はいくつかあるっぽい
現場で使う方法はおそらくAPIキーか？
→ちがう。まずはプロジェクトごとに認証方法がどのパターンにあてはまるか確認すること

認証方式を以下の3パターンに分けてみよう。

・標準化されたHTTP認証方式
・APIキー認証
・Form認証 / アクセストークン認証

↓参考

https://apidog.com/jp/blog/introduction-to-api-authentication/

https://architecting.hateblo.jp/entry/2020/03/27/033758

https://qiita.com/TakahikoKawasaki/items/e37caf50776e00e733be

#### APIキー（API Key）による認証
クライアントは、APIキーを生成または取得し、APIリクエストにそれを含めます。APIキーは、クライアントの識別子として機能し、サーバー側で検証されます。正しいAPIキーが提供されない場合、アクセスは拒否されます。

#### OAuthによる認証
OAuth（Open Authorization）は、クライアントがAPIにアクセスするために認証と認可を行うためのプロトコルです。クライアントは、APIプロバイダーから発行されたアクセストークンを取得し、APIリクエストにそれを含めます。サーバー側でアクセストークンが検証され、クライアントの認証と認可が行われます。

#### Basic認証（Basic Auth）
クライアントは、APIリクエストのヘッダーにユーザー名とパスワードをBase64でエンコードした情報を含めます。サーバーは、デコードしてユーザー名とパスワードを確認し、クライアントの認証を行います。

#### トークン（Token）ベースの認証
クライアントは、APIリクエストにトークンを含めます。トークンは、事前に認証局から発行されたものであり、有効期限やアクセス権を持っています。サーバーはトークンを検証し、クライアントの認証を行います。

以下に、API認証のさまざまな手法について簡単に説明します。

#### ダイジェスト（Digest）認証
Digest Authenticationは、HTTPプロトコルで使用される一種の認証方法です。クライアントとサーバー間でパスワードを平文で送信するのではなく、パスワードのハッシュ化を行い、セキュアな認証を提供します。

#### Hawk（ホーク）認証
Hawk Authenticationは、HTTP上でのセキュアな認証を実現するためのプロトコルです。ユーザー名とパスワードに基づいて生成されたトークンを使用して認証を行います。

#### AWS Signature（AWS署名）認証
AWS Signatureは、Amazon Web Services（AWS）が提供するAPIに対する認証方法です。リクエストに署名を追加し、署名の検証によってクライアントの正当性を確認します。

#### NTLM認証
NTLM Authenticationは、Windowsベースのシステムで使用される認証プロトコルです。クライアントとサーバー間でチャレンジとレスポンスのやり取りを行い、クライアントの認証を行います。

#### Akamai EdgeGrid認証
Akamai EdgeGrid Authenticationは、Akamai CDN（Content Delivery Network）のAPIに対する認証方法です。APIキー、クライアントトークン、署名などの要素を使用して認証を行います。

これらの認証方法は、特定のシステムやサービスにおける認証の手法の一部です。各手法は異なるプロトコルやアルゴリズムを使用しており、セキュリティと認証のニーズに応じて選択されます。ただし、詳細な実装や利用方法については、各認証方法の仕様やドキュメントを参照してください。また、APIプロバイダーの提供するドキュメントやガイドラインを確認することも重要です。

### APIキー、APIトークンとは

https://cloudapi.kddi-web.com/magazine/other/waht-api-key

アクセストークンを発行できていれば下記の方法で
VScodeからAuthorizationを設定すれば接続できそう？

https://zenn.dev/shikumiya_hata/books/33f44d4f561ec4/viewer/fd3203

![スクリーンショット 2024-01-14 19.15.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/627182/0baa2bf0-f4c5-d87c-a784-8b52fc17b9fe.png)

アクセストークンがあれば下記の感じでAPI投げることができそう？
```
GET https://example.com/
Authorization: Bearer some-token
```


現場でレスポンスを一括で確認できる方法はないかや
jsonファイルをパスで読み込んでする方法はないか調べた履歴
（できなかった・・）

https://fand.jp/rest-client-with-vs-code/

https://qiita.com/mgmgmogumi/items/ce87f6c35c0922ba2c67

https://zenn.dev/optimisuke/articles/9d4ab7d9c57b3e

https://qiita.com/kunihiros/items/e11daacfd62d85d83c06

https://stackoverflow.com/questions/61473990/how-to-post-an-image-with-form-data-in-rest-client-for-vscode

https://marketplace.visualstudio.com/items?itemName=humao.rest-client