QA
Intermediate LevelExpress JS

How do you use method-override middleware to support PUT and DELETE requests from standard HTML5 forms?

❓ Interview Prompt: Explain HTML form limitations (GET/POST only), method-override middleware, and rewriting req.method via query or headers.

Standard HTML5 '<form>' elements support ONLY 'GET' and 'POST' methods.

'method-override':

The 'method-override' middleware intercepts incoming requests, checks for a designated override (e.g. query param '?_method=DELETE' or header 'X-HTTP-Method-Override'), and rewrites 'req.method' to 'PUT' or 'DELETE', allowing Express to route to 'app.delete()' handlers!

Code Implementation Example

javascript
import express from 'express';
import methodOverride from 'method-override';

const app = express();
app.use(express.urlencoded({ extended: true }));

// Override HTTP method using _method query parameter
app.use(methodOverride('_method'));

// Form action="/items/42?_method=DELETE" executes this app.delete handler!
app.delete('/items/:id', (req, res) => {
  res.json({ deleted: req.params.id });
});
💡Rewriting HTML form POST requests to DELETE using method-override.
🎯 Interview Key Takeaway

Use method-override middleware to support PUT and DELETE handlers from standard HTML5 forms.

#method-override#HTML Forms#HTTP Verbs#Intermediate
Back to all Express JS Questions→

More Express JS Interview Questions

Beginner LevelExpress JS

What is Express.js and how does the middleware pipeline work?

Beginner LevelExpress JS

What is the difference between req.params, req.query, and req.body?

Beginner LevelExpress JS

How does express.Router() work for building modular route controllers?