Node jsで簡単にServerを作ってみる②(jsonデータをGET、POSTする)
Node.jsでJSONデータをGETおよびPOSTリクエストでやり取りすることができます。
基本的なHTTPサーバーを構築してJSONデータをGETおよびPOSTリクエストをしてみます!
GET
一旦GETでデータを持ってくるようにします
URL
をどこから持ってくるか設定後method
でなんのアクションをするか設定します!
const server = http.createServer((req, res) => {
const url = req.url; // どこに
const method = req.method; // アクション
if (url === "/fruit") {
if (method === "GET") {
}
}
メモリの保管しているデータを送ります
// 保管しているデータ
const fruits = [
{ name: "apple" },
{ name: "banana" },
{ name: "orange" },
{ name: "pineapple" },
];
writeHead
でstatus code
とheader
の情報を送ることもできます
データを読むことなのでstatus code
は200にして保管しているデータをJSON形で変換して送ります
if (url === "/fruit") {
if (method === "GET") {
res.writeHead(200, { "Content-Type": "application/json" });
res.end(JSON.stringify(fruits));
}
JSONデータを確認できました!
全体コード⇩
// 保管しているデータ
const fruits = [
{ name: "apple" },
{ name: "banana" },
{ name: "orange" },
{ name: "painapple" },
];
const server = http.createServer((req, res) => {
const url = req.url; // どこに
const method = req.method; // アクション
if (url === "/fruit") {
if (method === "GET") {
res.writeHead(200, { "Content-Type": "application/json" });
res.end(JSON.stringify(fruits));
}
}
});
server.listen(8080);
POST
今回はデータを持ってきて新しいデータを追加します!
BufferでPOSTしてみます
body objectを作った後res.onイベントでデータを持ってきた後の処理をします!
} else if (method === "POST") {
const body = [];
req.on("data", (chunk) => {
console.log(chunk);
body.push(chunk);
});
}
req.onのendイベントで、JSON.parse()を使用して受け取ったJSONデータをBuffer.concat(body)で結合し、その後toString()で変換してJSONとして返します。
その後、新しく受け取った配列をpushします。
req.on("end", () => {
const bodyStr = Buffer.concat(body).toString();
const fruit = JSON.parse(bodyStr);
fruits.push(fruit);
console.log(fruit);
// 新しく作ったから201で返す
res.writeHead(201);
res.end();
});
ブラウザではPOSTは確認ができないのでpostmanを使って確認します
※postmanでlocalhostの確認ができないのでデスクトップアプリをDLして確認します!
POSTなのでbodyにJSONデータを入れて送信してみたら
http://localhost:8080/fruit
で201コードが返却されるのが見られます!
consloeとURLでもデータが入っていることが確認できます!
全体コード⇩
} else if (method === "POST") {
const body = [];
req.on("data", (chunk) => {
console.log(chunk);
body.push(chunk);
});
req.on("end", () => {
const bodyStr = Buffer.concat(body).toString();
const fruit = JSON.parse(bodyStr);
fruits.push(fruit);
console.log(fruit);
// 新しく作ったから201で返す
res.writeHead(201);
res.end();
});
}
結論
ここまで簡単にサーバーを作成する方法を調べました!
Expressのようなフレームワークを利用すれば、さらに簡便で効率的にサーバーを構築することができます。次回はExpressを使って、ローカルではなく本当のサーバーを構築して登録してみます!
Discussion