ข้ามไปยังเนื้อหา

การสร้าง JSON API

ต่างจาก URL และ headers ที่มีพร้อมทันที body ของ request มาเป็น stream ของ chunk คุณต้องเก็บรวบรวมด้วย event data และ end:

function readBody(req) {
return new Promise(function(resolve, reject) {
let raw = '';
req.on('data', function(chunk) { raw += chunk; });
req.on('end', function() { resolve(raw); });
req.on('error', reject);
});
}

เมื่อได้ string ดิบแล้ว ให้ parse ด้วย JSON.parse() ใน try/catch เพื่อจัดการ input ที่รูปแบบผิดพลาดอย่างสง่างาม

server ด้านล่างจัดการ list ของ item ใน memory โดยรองรับ:

  • GET /items — แสดง item ทั้งหมด
  • POST /items — เพิ่ม item (อ่าน JSON body)
  • GET /items/:id — ดึง item เดียว (คืน 404 ถ้าไม่มี)
Node.js

Needs the Node.js runtime — open in StackBlitz to run.

เปิดใน StackBlitz แล้วทดสอบ API ด้วย built-in HTTP client หรือ curl:

Terminal window
curl http://localhost:3000/items
curl -X POST http://localhost:3000/items -H 'Content-Type: application/json' -d '{"name":"TypeScript"}'
curl http://localhost:3000/items/3
curl http://localhost:3000/items/99
สถานการณ์Status Code
อ่านข้อมูลสำเร็จ200 OK
สร้าง resource สำเร็จ201 Created
field หายหรือ body ผิดรูปแบบ400 Bad Request
ไม่พบ resource404 Not Found
server error500 Internal Server Error
ทำไมต้องเก็บ request body ด้วย event `data` และ `end` แทนการอ่านแบบ synchronous?
HTTP status code ใดที่ POST endpoint ควรคืนเมื่อสร้าง resource ใหม่สำเร็จ?
client ส่ง JSON body ที่ invalid มา status code ตอบกลับที่ถูกต้องคืออะไร?