আগের পর্বে আমরা শিখেছি কীভাবে 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 Method | Action |
|---|---|
GET | Read data |
POST | Create new data |
DELETE | Remove data |
PUT | Update 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.
💬 মন্তব্য / Comments