티스토리 뷰
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의 값을 커스텀 할 수 있다는 것을 알았고, 아직 깊은 단계의 지식은 아니지만
점차 공부해나가면서 이런 지식을 꾸준히 키워나가야겠다.
'읽고 쓰고 씹고 즐기고 > Java' 카테고리의 다른 글
Request Handler - Login 여부를 cookie를 통해 확인하기. (0) | 2020.04.06 |
---|---|
Request Hander - 302 Found 적용하기 (0) | 2020.04.03 |
Request Handler - body의 값을 이용하여 객체 만들기 (0) | 2020.04.03 |
Request Handler - Header의 body를 읽어오기. (0) | 2020.03.11 |
RequestHandler Header읽어오기. (1) | 2020.03.05 |
- Total
- Today
- Yesterday
- graphQL
- 자바스크립트
- Spring Boot
- @Autowired
- header
- 멀티모듈
- Request Handler
- 개발일지
- JavaScript
- 프로그래머스
- body
- HTTP
- 스터디 회고
- Gradle
- spring-boot
- 인텔리J
- web
- homebrew
- Spring
- 한 입 크기로 잘라먹는 리액트
- Java
- 개발
- 모듈
- 일지
- springboot
- RequestHandler
- MySQL
- JAR
- mapping
- 회고
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |