আগের পর্বে আমরা শিখেছি কীভাবে DELETE API দিয়ে প্রোডাক্ট মুছে ফেলতে হয়। আজ আমরা শিখবো কীভাবে কোনো প্রোডাক্টের তথ্য আপডেট করতে হয়—নাম, দাম, স্টক পরিবর্তন।

PUT API কী?

PUT পদ্ধতি কোনো বিদ্যমান রিসোর্স সম্পূর্ণ বা আংশিক আপডেট করতে ব্যবহার হয়। আমাদের দোকানে দরকার—চালের দাম বদলাবে, ডালের স্টক কমবে-বাড়বে। PUT API এসবই করতে পারে।

HTTP Methodকাজসহজ বাংলায়
GETডেটা পড়া"তালিকা দাও"
POSTনতুন ডেটা যোগ"এটা রাখো"
DELETEডেটা মুছে ফেলা"এটা সরাও"
PUTডেটা আপডেট"এটা বদলাও"

PUT vs PATCH — কোনটা কখন?

আপডেটের জন্য দুটো মেথডই চলে। আমরা আজ PATCH-এর মতো PUT ব্যবহার করবো—যেখানে শুধু যে ফিল্ডগুলো পাঠানো হবে, সেগুলোই আপডেট হবে। একে বলে পার্শিয়াল আপডেট

Methodকী করে?উদাহরণ
PUTসম্পূর্ণ অবজেক্ট রিপ্লেসপুরো প্রোডাক্ট আপডেট
PATCHশুধু নির্দিষ্ট ফিল্ড আপডেটশুধু দাম বাড়ানো

ধাপ ১: server.js ওপেন করো

cd ~/shop-api
micro server.js

ধাপ ২: PUT রাউট যোগ করো

app.delete('/products/:id', ...) রাউটের নিচে এই নতুন কোডটি যোগ করো:

app.put('/products/:id', (req, res) => {
  const products = readProducts();
  const id = parseInt(req.params.id);
  const index = products.findIndex(p => p.id === id);

  if (index === -1) {
    return res.status(404).json({ message: 'এই id-র কোনো প্রোডাক্ট পাওয়া যায়নি' });
  }

  const updatedData = req.body;

  // পার্শিয়াল আপডেট: শুধু যে ফিল্ড এসেছে, সেটাই বদলাও
  if (updatedData.name !== undefined) products[index].name = updatedData.name;
  if (updatedData.price !== undefined) products[index].price = updatedData.price;
  if (updatedData.stock !== undefined) products[index].stock = updatedData.stock;

  writeProducts(products);

  res.json({ message: 'প্রোডাক্ট আপডেট হয়েছে', product: products[index] });
});

লাইন-বাই-লাইন ব্যাখ্যা

লাইনকী করছে?সহজ ভাষায়
findIndex()নির্দিষ্ট id-র প্রোডাক্টের ইনডেক্স খুঁজছে"জিনিসটা কোন জায়গায়?"
if (index === -1)ইনডেক্স না পেলে 404"এটা দোকানে নেই"
!== undefinedচেক করছে ফিল্ড এসেছে কিনা"নাম বদলাতে চাচ্ছো?"
পার্শিয়াল আপডেটশুধু যেটা বলছো, সেটাই বদলাবে"বাকিগুলো আগের মতো"

ধাপ ৩: সার্ভার রিস্টার্ট করো

# Ctrl+C দিয়ে বন্ধ করো, তারপর:
node server.js

ধাপ ৪: curl দিয়ে টেস্ট করো

শুধু দাম আপডেট (পার্শিয়াল):

curl -X PUT http://localhost:3000/products/1 \
  -H "Content-Type: application/json" \
  -d '{"price": 18}'

নাম ও স্টক একসাথে আপডেট:

curl -X PUT http://localhost:3000/products/1 \
  -H "Content-Type: application/json" \
  -d '{"name":"প্যারাসিটামল ৫০০","stock": 180}'

ভুল id দিলে:

curl -X PUT http://localhost:3000/products/999 \
  -H "Content-Type: application/json" \
  -d '{"price": 50}'

উত্তর: {"message":"এই id-র কোনো প্রোডাক্ট পাওয়া যায়নি"}

আজ তুমি কী শিখলে

  • PUT — ডেটা আপডেট করা
  • findIndex() — অ্যারেতে নির্দিষ্ট আইটেম খুঁজে তার পজিশন পাওয়া
  • পার্শিয়াল আপডেট — শুধু যেসব ফিল্ড পাঠানো হয়েছে, সেগুলোই আপডেট
  • !== undefined চেক — কোনো ফিল্ড পাঠানো হয়েছে কিনা বোঝা
  • curl -X PUT — টার্মিনাল দিয়ে PUT টেস্ট

পরবর্তী পর্বে আমরা শিখবো ফ্রন্টএন্ড টেবিল — কীভাবে HTML ও JavaScript দিয়ে API থেকে ডেটা এনে সুন্দর টেবিলে দেখাতে হয়।

In the previous episode, we learned how to delete products using DELETE API. Today we'll learn how to update product information—name, price, and stock.

What is PUT API?

HTTP MethodAction
GETRead data
POSTCreate new data
DELETERemove data
PUTUpdate data

Step 1: Open server.js

cd ~/shop-api
micro server.js

Step 2: Add PUT route

app.put('/products/:id', (req, res) => {
  const products = readProducts();
  const id = parseInt(req.params.id);
  const index = products.findIndex(p => p.id === id);

  if (index === -1) {
    return res.status(404).json({ message: 'Product not found' });
  }

  const updatedData = req.body;

  if (updatedData.name !== undefined) products[index].name = updatedData.name;
  if (updatedData.price !== undefined) products[index].price = updatedData.price;
  if (updatedData.stock !== undefined) products[index].stock = updatedData.stock;

  writeProducts(products);

  res.json({ message: 'Product updated', product: products[index] });
});

Step 3: Restart server

# Ctrl+C to stop, then:
node server.js

Step 4: Test with curl

# Update only price
curl -X PUT http://localhost:3000/products/1 \
  -H "Content-Type: application/json" \
  -d '{"price": 18}'

# Update name and stock
curl -X PUT http://localhost:3000/products/1 \
  -H "Content-Type: application/json" \
  -d '{"name":"Paracetamol 500","stock": 180}'

Test error case

curl -X PUT http://localhost:3000/products/999 \
  -H "Content-Type: application/json" \
  -d '{"price": 50}'

In the next episode, we'll learn Frontend Table — how to display API data in a beautiful HTML table.