티스토리 뷰

Spring boot로 작업을 하다 보면 Controller에서 redirect를 이용해 원하는 곳에 요청을 보낼 수가 있다.

HTTP에도 이와 비슷한 것이 있는데 바로 302 Found다.

위 사진은 Response의 Header에 200 OK를 보내고 그 외 필요한 Header값을 넣어주고 있다.

그 후 Connection이 연결되면 동작하는 Method로 돌아와 확인해보니

ResponseHeader와 ResponseBody를 할당해주는 것을 볼 수 있다.

참고로 둘 중 하나라도 없으면 잘못된 응답을 전송했다며 이러한 창이 뜬다.

그렇기에 요청의 끝에는 Response Header와 body가 존재해야 하지만 302 Found는 예외다.

302 Found는 한마디로 요청을 한 번 더 보내는 것이기 때문이다.

 

예를 들자면 /create의 url로 들어왔을 때 회원가입을 진행한다면 성공 시 /ok.html 로 보내고 실패 시 /no.html로 보낸다고 가정해보자.

아래 사진은 내가 구현하면서 느낀 것을 기반으로 그린 그림이기 때문에 100% 정답이라곤 볼 수 없고 틀렸을 수도 있다.

/create라는 요청이 들어오면 한 번 더 요청을 해서 /ok.html로 가야할지 /no.html로 가야할지를 지정한다.

이렇게 유동적인 url로 요청을 보내는 부분은 Location Header가 담당하고 있다.

그럼 200 ok는 어떨까?

200 ok는 동작이 성공했음을 알려주는 code이기 때문에 Location이 따로 없다. 

그러므로 /create url이 들어온 순간 회원가입 로직이 동작할 것이고 들어온 요청에 해당하는 응답을 클라이언트에게 보내줄 것이다.

 

혹시 200 ok에 Location을 적용해도 잘 동작할지 궁금해서 테스트를 해봤다.

Header에 Location을 지정하여 /user/form.html로 이동하게 해놨다.

그 후 브라우저에서 /index.html로 들어가보니 /user/form.html로 이동하지 않고 index.html이 출력되는 걸 확인할 수 있었다.

 

- 회고 -

HTTP code에 Location처럼 url을 지정할 수 있는 기능이 있는 것을 처음 알았다.

이런 부분을 통해 Header의 값을 커스텀 할 수 있다는 것을 알았고, 아직 깊은 단계의 지식은 아니지만

점차 공부해나가면서 이런 지식을 꾸준히 키워나가야겠다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함