[Front-end] 개발자 공부

트러블 슈팅 | 405 Method Not Allowed Error 해결

MOLLY_ 2025. 2. 9. 03:43
728x90

< 목차 >
0. 들어가며
1. 요청 URL 확인
2. API 명세서에 프로토콜이 http가 아니라 https로 작성돼 있어서 s를 추가해 요청
3. imageId 중복 요청 삭제
4. 해결 | Back-end Code가 POST가 아닌 PUT으로 구현돼있음을 확인 후, HTTP Method 수정해 해결
 

 

 

 

0. 들어가며

 
POST http://sandbox-momentia.vsfe.me:8080/v1/image/258 요청이 허용되지 않는 메소드라는 에러가 떴다.
 

 
서버의 API 문서대로 구현을 했는데도 해당 에러가 뜨길래 여러 가지 시도를 했다.
 
 

1. 요청 URL 확인

IMAGE.imageUploadComplete(imageId) 가 올바른 URL을 반환하는지 console.log() 로 확인했다.
 

console.log('요청 URL: ', IMAGE.imageUploadComplete(imageId));

 
“요청 URL: /image/269”로, 제대로 뜨는 걸 확인했다. 이건 답이 아니었다.
 
 

2. API 명세서에 프로토콜이 http가 아니라 https로 작성돼 있어서 s를 추가해 요청

 

 
Postman으로 테스트해보니 s를 붙이면 응답이 없다며 에러가 떴다. 이것도 답이 아니었다.
 

문서 수정해달라고 요청드렸다..

 
 

3. imageId 중복 요청 삭제

 
‘imageId 가 이미 URL 경로에 포함되어 있는데, Request Body로도 중복해서 넘겨줘야 하는 게 맞는 건가?’ 싶어서 Back-end에 연락을 남겨 놓고, 여러 시도를 해봤다.
 
3-1. :imageId 없애서 /image 경로로도 요청해봤다.
3-2. URL Parameter로 값을 전달할 경우, Body를 보내면 거부하는 경우가 있는 듯하여 Request Body에서 imageId 빼고 {} 빈 객체를 전달해봤다.
 
둘 다 답이 아니었다. 403 에러가 떴다.
 
 

4. 해결 | Back-end Code가 POST가 아닌 PUT으로 구현돼있음을 확인 후, HTTP Method 수정해 해결

모든 시도가 안 통해서 ‘이제 백엔드의 연락을 기다리는 것밖엔 답이 없나..’ 하던 찰나, ‘백엔드 코드를 한 번 봐보자!!!’ 하는 생각이 들었다.
 

 
이런, PUT으로 구현이 돼있다. API 명세서엔 POST로 요청해야 한다고 쓰여있었는데 이상하다.
 

 
PUT Method로 요청하도록 코드를 수정했다.
 

 
헉!!!!! 된다!!!!
요청 성공 시 뜨는 HTTP Status인 204가 잘 뜨는 것을 확인할 수 있었다. 감격 🥺
 

 
백엔드 팀원들에게도 해결했음을 전달했다. API 명세서를 잘못 작성하신 게 문제의 원인이었다.
 
 

728x90