【Node-RED】新しくなったAPIリクエストの設定方法

# はじめに
Node-REDでLINE Botを作る際に、APIリクエストの仕様が新しくなっていた。（今更かもしれないが……）
結果は新旧どちらで設定しても変わらないが、新だとノードの数をちょっと減らせるので若干すっきりするような気がする。
従来の設定方法（旧）と、新しい設定方法（新）について以下に記載する。

# （旧）http inノードをスタートとする場合
Replyノードに、msg.payload.events[0].message.textで返したいテキストを入れる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2122226/c7ee1ccf-f17a-248d-0021-7e62df0fd8d5.png)

```json:josn
[{"id":"9a8ab7a1.5d84b8","type":"ReplyMessage","z":"9c7a7c03.ad6f2","name":"","replyMessage":"","x":840,"y":140,"wires":[]},{"id":"68647f64.58b23","type":"function","z":"9c7a7c03.ad6f2","name":"","func":"// http requestの結果を取得する\nconst result = msg.payload;\n// LINEサーバーからの内容を復元する\nmsg.payload = msg.line;\n// 返信メッセージをhttp requestの結果にする\nmsg.payload.events[0].message.text = result;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":660,"y":140,"wires":[["9a8ab7a1.5d84b8"]]},{"id":"6c42593d.ed8ec8","type":"http request","z":"9c7a7c03.ad6f2","name":"","method":"GET","ret":"obj","paytoqs":"ignore","url":"https://weather.tsukumijima.net/api/forecast/city/400040","tls":"","persist":false,"proxy":"","authType":"","x":510,"y":140,"wires":[["68647f64.58b23"]]},{"id":"8ad7991e.58a2f8","type":"function","z":"9c7a7c03.ad6f2","name":"","func":"// LINEサーバーからの情報を「msg.line」に移動させる\nmsg.line = msg.payload;\n// msg.payloadにメッセージ本体を入れる\nmsg.payload = msg.payload.events[0].message.text;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":360,"y":140,"wires":[["6c42593d.ed8ec8"]]},{"id":"25d1c787.6317c8","type":"http in","z":"9c7a7c03.ad6f2","name":"","url":"/webhook","method":"post","upload":false,"swaggerDoc":"","x":180,"y":140,"wires":[["8ad7991e.58a2f8"]]}]
```

① `http in`ノード
メソッド：POST
URL： /webhook

② `function`ノード（左）
コードに以下を指定
```js
// LINEサーバーからの情報を「msg.line」に移動させる
msg.line = msg.payload;
// msg.payloadにメッセージ本体を入れる
msg.payload = msg.payload.events[0].message.text;

return msg;
```
③ `http request`ノード
出力形式：JSONオブジェクト
※任意のAPI（ここでは[天気予報API](https://weather.tsukumijima.net/)を設定）

④ `function`ノード（右）
コードに以下を指定
```js
// http requestの結果を取得する
const result = msg.payload;
// LINEサーバーからの内容を復元する
msg.payload = msg.line;
// 返信メッセージをhttp requestの結果にする
msg.payload.events[0].message.text = result;

return msg;
```

⑤ `Reply`ノード
「Secret」「AccessToken」設定


# （新）`Webhook`ノードをスタートとする場合
ReplyMessageノードがmsg.payloadの中身をそのまま返してくれる。
msg.payload.events[0].～が入ってきたら旧仕様で動く。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2122226/eca9f504-cac4-71a6-915f-80a7565986d9.png)

```json:json
[{"id":"796aa5ee.42b38c","type":"Webhook","z":"e9907faa.36928","name":"","url":"/webhook","x":140,"y":200,"wires":[["6c98ee1f.7816f"]]},{"id":"74a57a35.8b9074","type":"ReplyMessage","z":"e9907faa.36928","name":"","replyMessage":"","x":640,"y":200,"wires":[]},{"id":"6c98ee1f.7816f","type":"http request","z":"e9907faa.36928","name":"","method":"GET","ret":"obj","paytoqs":"ignore","url":"https://weather.tsukumijima.net/api/forecast/city/400040","tls":"","persist":false,"proxy":"","authType":"","x":310,"y":200,"wires":[["b9403a59.40b1e8"]]},{"id":"b9403a59.40b1e8","type":"function","z":"e9907faa.36928","name":"","func":"msg.payload = '今日の' + msg.payload.title + 'は' + msg.payload.forecasts[0].telop + 'です。' ;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":460,"y":200,"wires":[["74a57a35.8b9074"]]}]
```

① `webhook`ノード
Path： /webhook

② `http request`ノード
URL：https://weather.tsukumijima.net/api/forecast/city/400040
出力形式：JSONオブジェクト
※任意のAPI（ここでは[天気予報API](https://weather.tsukumijima.net/)を設定）

③ `function`ノード
コードに以下を指定
```js
msg.payload = '今日の' + msg.payload.title + 'は' + msg.payload.forecasts[0].telop + 'です。' ;
return msg;
```

④ `Reply`ノード
「Secret」「AccessToken」設定