REST 미지원 메서드 처리

2022. 3. 17. 18:46BACK END/NODE.JS

1. Ajax 로 처리

$.ajax({
  type: 'PUT',
  headers: { 
    "X-HTTP-Method-Override": "PUT" },
});

type이나 headers에 메서드를 설정할 수 있음.

 

간혹 환경에 따라 GET, POST, PUT, DELETE 전부를 이용하지 못할수도 있음.

예를 들면 WAS가 메소드를 모두 지원해도 방화벽에서 GET과 POST만 받아들이면 PUT과 DELETE는 이용할 수 없기 때문에 헤더를 통해 메소드를 별도로 설정해주면 저걸 key 값으로 해서 작업을 할 수 있다고 함.....

 

 

ajax예시

$.ajax({
  type: 'PUT',
  url: url
  data: data
  headers: { 
    "Content-Type": "application/json",
    "X-HTTP-Method-Override": "PUT" 
    },
    success: function(res){
      console.log('success!'); 
      console.log(res); 
    },
    error: function(err){
      console.log('Error!'); 
    }
});

 

 

2. Method-override<form> 태그로 처리

 

method-override 패키지 설치

npm i method-override --save

 

app.js

var methodOverride = require('method-override')

// Method-Override
app.use(methodOverride('_method'));

 

 

submit action 수정

<input value="이름" onclick="javascript: action='[주소]/?_method=[메소드]';" type="submit" />

action 뒤에 '?_method='를 추가하고 사용할 메소드를 적어줌

 

 

 

클라이언트 예시

<form method="POST">
    아이디 <input type="text" name="id" style="width:130px" placeholder="아이디"> <br />
    비밀번호 <input type="text" name="pw" style="width:130px" placeholder="비밀번호">
    <input value="로그인" onclick="javascript: action='/login/select/?_method=PUT';" type="submit" /> <br />
</form><br />

 

 

서버 라우트

router.[메소드]('/', function (req, res) { -- }

 

서버 라우트 예시

router.delete('/', function (req, res) {
  console.log("DELETE ROUTER~~~~~~~~~~")
});

 

 

 

 

 

 

 

 

 

참고

 

[REST] PUT, PATCH, DELETE 미지원 처리

브라우저에 따라 PUT, PATCH, DELETE 방식을 지원하지 않는 경우가 있을 수 있다. 이를 해결하기 위해 대부분 브라우저에서는 일단 POST 방식으로 전송하고, 추가적인 정보를 통해 PUT, PATCH, DELETE 방식

velog.io

 

 

[NodeJS] PUT, DELETE, method-override

RESTful API의 7가지 패턴 중 변경된 정보를 업데이트하는 PUT method와 데이터를 삭제하는 DE...

blog.naver.com

 

OKKY | ajax 속성에서 질문이요

headers: { Content-Type : application/json , X-HTTP-Method-Override : POST }, 1. headers 라는게 속성이 맞나요? 2. 그안에 json이라는 타입을주는건알겠는데  그밑에 post는 먼가요? 3. type에 post를 지

okky.kr