본문 바로가기
TIL : Today I learned (or Week)

TIL 230627 : Headers에 정보 보내기 (feat. HttpServletResponse)

by 우인입니다 2023. 6. 27.

Http의 동작 과정

아직 Http에 대해 자세히 배우지 못한 채로 그저 백엔드단에서의 코딩을 하다보니 어렴풋이 눈치 챈 것들이 있다.

위 사진 처럼 크게 클라이언트서버가 있고 Request(클라이언트 -> 서버) / Response(서버 -> 클라이언트) 이 두가지로 나뉘어져 응답과 반응을 한다라는 것.

 

과제를 하며 POSTMAN으로 받은 Request, Response 로그이다.

위 문단은 Request로, GET메소드로 url과 아래 다른 정보들이 Headers에 담겨서 서버로 간걸 확인할 수 있다.

아래는 Response로 두번째 문단이 Headers, 세번째 문단이 Body이며 각각에 서버로부터 받은 정보들 상태코드나 각종 키-값들의 형태로 Headers에 담겨있고, Body에 담아서 온 데이터가 세번째 문단에 있다.

 

 

 

Response log 의 구성.


Response Headers에 정보 담아보기

결과적으로 해볼 것은 위 사진처럼 Response에 Header를 추가하는 것이다.

보기엔 너무 쉬운데... 아무것도 모를땐 정말..

 

 

 

Header 추가하기

방법만 말해보자면 HttpServletResponse객체 불러내서 .setHeader(String name, String value); 실행하면 된다.

추가로 상태코드도 setStatus(int);로 설정 가능하다.

 

그래도 200으로 설정해도 redirect를 해두면 그에 맞는 상태코드 301가 리턴되는 걸 보면 덮어 쓰일 여지는 있는 것 같다.

 

 

Servlet

위에 HttpServletResponse은 어디서 튀어나온 걸까.

추적해보면 tomcat에서 사용되는 인터페이스임을 확인할 수 있다.

Spring또한 servlet기반으로 동작한다고 하는데, 이 servlet은 원래 java에서 사용했던 개념이다.

간략히 이해하기로 client로부터 요청을 받고 응답을 줄때 중간다리 역할하는 매개체..(?)

이 부분은 좀 더 공부가 필요한 듯하다.

무튼 톰캣에서 이미 사용해주는 거라서 거부감없이 잘 활용해야한다.

일주일간 거부감이 너무 많았었다. 어디서 튀어나온건지 모르겠고, 답답했다.

적당히 동작원리만 체크하고 JPA를 위해 힘을 비축하라는 튜터님의 조언(?)을 참고하여

이정도로 이해를 마쳐보려한다..😂

 

 

 

 

짧은 회고

대부분의 부트캠프나 국비학원 등 짧은 시간에 스프링을 숙지하게 될텐데,

그런 상황인지라 필연적으로 스프링에서 제공하는 기능들 너머에 있는 다양한 구조나 프로세스들을 알 턱이 없다.

그렇다보니 그냥 쓰라는 대로 쓰고 호출되지도 않는 메소드는 어떻게 작동이 되고, 내가 만든 적도 없는 클래스가 튀어나와서 해당 기능을 수행하는지 정신이 없다.

 

http동작과정이라도 배경지식이 선행이 되었더라면 이해가 조금 쉬었을 것 같은 아쉬움이 좀 남지만, 그럼에도 적정선에서 이해를 마치며 Http관련해서는 잠시 유보하고 이후 과정을 진행해보려한다.