Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8829

node.jsでHTTPリクエストを受け取るAPIを作る

$
0
0

はじめに

今回はNode.jsのフレームワークであるExpressでHTTPリクエストを受け取るアプリケーション?を作りたいと思います。
利用用途としては

  • しっかりリクエスト送れてるの?
  • Expressとかnode.jsでAPIを作ってみたい

といったことが想定されます。私の場合は主に、というか9割前者ですね。JMETERでリクエストが正しく送れているか確認したかっただけです。

実装

下準備

まず以下のコマンドを実行します。この時、プロジェクトのディレクトリ内で行いましょう。

> npm init

あとはダイアログに従い、入力するだけです。
するとpackage.jsonが作成されると思います。

次にExpressをインストールします。

> npm install express -save

このコマンドをたたけばいろいろダウンロードされ、環境が整います。

実行するファイルを作る

index.js
constexpress=require('express')constapp=express()// body-parserのおまじない// 参照:https://expressjs.com/ja/4x/api.html#req.bodyconstbodyParser=require('body-parser')app.use(bodyParser.urlencoded({extended:true}))app.listen(3000)app.get('/get',function(req,res){res.send('Receive Get request')console.log('GETリクエストを受け取りました')})app.post('/post',function(req,res){res.setHeader('Content-Type','text/plain');res.send('Receive POST request as '+req.body.text)console.log('POSTリクエストを受け取りました')console.log(req.body)})

body-parserのおまじないこれかなり重要です。これがないとreq.bodyでは表示されません。

実行してみよう

ここではVScodeのREST Clientを使います。

GETリクエスト

GET http://localhost:3000/get

返ってくるレスポンス

HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 19
ETag: W/"13-XJXW/hqJ3os48dLZM0f0yOQl3GA"
Date: Fri, 15 Nov 2019 16:02:55 GMT
Connection: close

Receive Get request

POSTリクエスト

POST http://localhost:3000/post
Content-Type:application/x-www-form-urlencoded

text=テスト送信

返ってくるレスポンス

HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: text/plain; charset=utf-8
Content-Length: 38
ETag: W/"26-i+FQlfv64fSmWg1IEMiZfpdw9eY"
Date: Fri, 15 Nov 2019 16:03:59 GMT
Connection: close

Receive POST request asテスト送信

注釈

res.send('Receive POST request as '+req.body.text)

のtextの部分を変えることでPOSTリクエストの

text=テスト送信

のtextの部分を変えることができます。

まとめ

ほかにもjson形式のPOSTリクエストを受け取るとかできますが、今回は省略。

参考

https://qiita.com/kefian1go/items/198d9da2240846e28a48
https://expressjs.com/ja/4x/api.html#req.body


Viewing all articles
Browse latest Browse all 8829

Trending Articles