Postmanを使ってHTTPに送ったデータを確認する

##Postmonとは
HTTPのメソッドを通して行なったリクエストの結果を、簡単に確認できるようにするツール。

APIを構築する時、ブラウザからHTTPリクエストをサーバーに出すことになる。Postmanを使うと、HTTPのリクエストを確認し、REST APIが機能しているかを、簡単にチェックすることができる。

##インストール方法
「Download Postman for Mac」https://www.postman.com/downloads/
上記のページよりダウンロードする。

アカウントを作成し、Sign inする必要がある（googleアカウントでもサインイン可能）

##APIからのリクエストを確認する
###テストのためのファイルを作成
<h6>＜作成方法１＞</h6>
・「＋New」をクリックし、「Request」を作成

<img width="1176" alt="スクリーンショット 2020-06-21 10.14.42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595580/13924276-a255-b197-cb7d-65478631d3ee.png">


・リクエストに名前をつける。HTTPの動作を確認する「Collections」を作成

<img width="504" alt="スクリーンショット 2020-06-21 10.23.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595580/d0c1f056-7cbc-5609-124d-1c2090500ab8.png">



・request name: テストしたい、APIのHTTPリクエスト名
（例：GETをテストしたいのか、DELETEをテストしたいのか、など）
・create folder: テストのためのフォルダーを作成。Postman上の既存のフォルダーに付け加えることもできる
・「Save to APIアプリ名」で保存

<h6>＜作成方法２＞</h6>
・「＋New collection」
・「Name」にコレクション名（テストしたいアプリ名）をつけて「Create」

<img width="1174" alt="スクリーンショット 2020-06-21 10.19.19.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595580/84b05370-712d-8936-6a3f-c18ca73db20c.png">


・「...」をクリックし「Add request」を選択

<img width="1179" alt="スクリーンショット 2020-06-21 10.20.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595580/111370cc-f46d-d854-1b91-21fe30b05a01.png">


・request name（テストしたいHTTPリクエストの名前）をつける。
・「save to コレクション名」をクリックし保存

<img width="512" alt="スクリーンショット 2020-06-21 10.21.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595580/445cd35a-8a9f-8cc9-dab4-470ee00bfcf6.png">


###使ってみよう
<h6>①データをgetする</h6>

<img width="1166" alt="スクリーンショット 2020-06-21 10.29.59.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595580/a5fca287-a852-176f-3618-ae0b381a9f71.png">

・テストしたいAPIのURLを入力
・テストしたいHTTPメソッドを選択（今回はGET）
・「send」をクリック
↓
「Body」にHTTPのレスポンスが表示される


<h6>②データをpostする</h6>

<img width="1180" alt="スクリーンショット 2020-06-21 10.28.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595580/2ea023ed-85d7-7d26-5d42-070fcdb8ef80.png">

・テストしたいAPIのURLを入力
・テストしたいHTTPメソッドを選択（今回はPOST）
・POSTしたいデータをPostman上から入力する

「Body」>「raw」>「JSON」を選択し、POSTしたいデータをJOSN形式で書き込む。

・「send」を押してデータをPOST
↓
「Body」にHTTPのレスポンスが表示されるので、データがPOSTできているか確認する

<h6>＜参考＞今回のアプリで使用したコード</h6>
<index.js>

```javascript
const express = require('express');
require('./db/mongoose')
const User = require('./models/user')
const Task = require('./models/task')

const app = express()

const port = process.env.PORT || 3000

//postしたデータを受け取る処理
app.use(express.json())

app.post('/users', (req, res)=> {
  const user = new User(req.body)
 //.save()でPromiseオブジェクトを作成し、インスタンスをデータベースに保存
  user.save().then(() => {
    res.send(user)
  }).catch((e) => { //.catchでエラー時の処理を分岐させる
    res.send(e)
  })
})

```



##HTTPステータスを操作する
<h6>①返ってくるHTTPステータスの確認</h6>

<img width="866" alt="スクリーンショット 2020-06-21 10.31.10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595580/2a5515d2-58a2-c2d4-9a2e-b541238b34c6.png">

「Body」に表示されるHTTPのレスポンスの「status」を確認。
ここに表示されているのが、返ってくるHTTPステータス

<h6>②返ってくるHTTPステータスの変更</h6>

```javascript

app.post('/users', (req, res)=> {
  const user = new User(req.body)
  //.save()でPromiseオブジェクトを作成し、インスタンスをデータベースに保存
  user.save().then(() => {
    res.status(201).send(user)
  }).catch((e) => {
    res.status(400).send(e)

  })
})
```

返ってくるHTTPステータスは「.status()」で設定できる。
Postmanでレスポンスを確認する際はstatus欄も確認する。

<h6>＜参考＞HTTPステータスの一覧と意味</h6>
HTTP Status Codes
https://httpstatuses.com/