Java & Spring

Ajax Patch Method 에러 대환장 파티

Captic 2020. 10. 1. 15:51

1차

상황 : ajax patch(데이터의 일부 수정을 위해) 요청을 보내고 싶다

 

문제 : javascrpt객체를 보내도, json 데이터를 보내도 controller에서 받지를 못했다

        (당연히 json 때에는 @RequestBody는 파라미터에 당당히 붙어있다)

        심지어 Get, Post는 되는데 patch만 안되더라

 

해결 : cotentType에 "application/json-patch+json; charset=utf-8"로 하고

      데이터를 javascript객체에 JSON.stringify 해서 보내니까 받아졌다

 

 

2차

상황 : security를 적용하면서, ajax patch로 요청에 data를 json 형식으로 보내기

 

문제 : 403에러가 엄청 뜨길레 security 잘못인줄 알고 security-context 설정을 주석

    -> 그럼에도 403에러가 뜨길레 이번에도 patch 문제인가 했는데 post도 안되는 상황이 발생

 

해결

위에서 보이듯(솔직히 잘 안보인다)

요청 헤더에 csrf와 관련된 값이 추가되어 있지 않아서 나온 에러였다

 

 

 

3차

상황 : patch로 여러개의 data를 (javascript 객체에 2개 이상의 데이터 넣기, 예 { a : b, c : d }) 보내기

 

문제 : controller에서 a, c가 받아지지 않는다(@RequestBody를 붙인 String 변수 2개)

        그렇다고 json이니까 파라미터를 (@RequestBody를 붙인) string 변수 1개로 해도 제대로 받아지지 않았다

        Map(1차 Stirng,String / 2차 Object, String)으로 해도 에러

 

해결 : @RequestBody Map<String, String>으로 하니 아주 깔끔하게 해결

   -> 강사님이랑 둘이서 답을 코앞에 두고 빙빙 돌고 있던 상황이라 허무해부렀다