프로그래밍/NodeJS

method-override

타코코딩 2023. 10. 5. 10:25
 method-override
는 HTTP 요청 메서드를 재정의하기 위해 Express.js와 같은 웹 프레임워크와 함께 일반적으로 사용되는 Node.js 라이브러리입니다. 이를 통해 HTML 양식이나 AJAX 요청에서 표준 GET 및 POST 이외의 HTTP 메서드를 사용할 수 있습니다. 이는 GET 및 POST 메서드만 지원하는 HTML 양식을 처리할 때 특히 유용하지만 RESTful API에서 일반적인 PUT, PATCH, DELETE 등과 같은 메서드를 사용해야 합니다.
요약

npm install method-override

터미널 설치

const methodOverride = require("method-override");

app.use(methodOverride("_method"));

js파일에 method override호출

 <form action="/edit?_method=PUT" method="POST" class="form-box">

form 태그 method부분은 post로 고치지말고 action에?_method=PUT으로 수정 가능


설명

설치 방법 재정의: npm 또는 Yarn을 사용하여 설치할 수 있습니다.

npm install method-override

# or

yarn add method-override

 

Express 애플리케이션에서 이를 요구하고 구성합니다.

const express = require('express');
const methodOverride = require('method-override');
const app = express();
// Use method-override middleware

app.use(methodOverride('_method'));
// Other middleware and route configurations
// ...
app.listen(3000, () => {
console.log('Server is running on port 3000');
});

 

위 코드에서는 app.use(methodOverride('_method'))Express 애플리케이션의 미들웨어로 메소드 재정의를 설정합니다. 요청 URL에서 "_method"라는 쿼리 매개변수를 찾아 이를 사용하여 HTTP 메서드를 재정의하도록 method-override에 지시합니다.

HTML 양식에서 사용: HTML 양식에서 GET POST 이외의 방법을 사용하려는 경우 "_method" 쿼리 매개변수를 통해 원하는 방법을 지정하면 됩니다. 예를 들어 다음과 같은 양식을 만들 수 있습니다.

<form action="/resource"method="POST">
<input type="hidden"name="_method"value="PUT">
<button type="submit">Update Resource</button>
</form>

 

이 양식에서 이름이 "_method"이고 값이 "PUT"인 숨겨진 입력 필드는 이 요청을 POST 요청 대신 PUT 요청으로 처리하도록 method-override에 지시합니다.

Express에서 요청 처리: Express 경로 핸들러에서 지정된 HTTP 메소드에 대해 일반적으로 하는 것처럼 요청을 처리할 수 있습니다. 예를 들어:

app.put('/resource', (req, res) => {
// Handle the PUT request
res.send('Updating resource');
});

 

app.put('/resource')PUT으로 재정의된 메서드를 사용하여 양식이 제출될 때 경로 핸들러가 호출됩니다.

Express 애플리케이션에서 메서드 재정의를 사용하는 방법에 대한 전체 예는 다음과 같습니다.

const express = require('express');
const methodOverride = require('method-override');
const app = express();
const port = 3000;
app.use(express.urlencoded({ extended: true }));
app.use(methodOverride('_method'));
app.get('/', (req, res) => {
res.send(`
<form action="/resource" method="POST">
<input type="hidden" name="_method" value="PUT">
<button type="submit">Update Resource</button>
</form>
`);
});
app.put('/resource', (req, res) => {
res.send('Resource updated');
});
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});

 

이 예에서 루트 URL에 액세스하여 양식을 제출하면 요청이 메서드 재정의에 의해 PUT 요청으로 처리되고 에 대한 경로 핸들러가 트리거 됩니다app.put('/resource').