Http의 동작 과정
아직 Http에 대해 자세히 배우지 못한 채로 그저 백엔드단에서의 코딩을 하다보니 어렴풋이 눈치 챈 것들이 있다.
위 사진 처럼 크게 클라이언트와 서버가 있고 Request(클라이언트 -> 서버) / Response(서버 -> 클라이언트) 이 두가지로 나뉘어져 응답과 반응을 한다라는 것.
과제를 하며 POSTMAN으로 받은 Request, Response 로그이다.
위 문단은 Request로, GET메소드로 url과 아래 다른 정보들이 Headers에 담겨서 서버로 간걸 확인할 수 있다.
아래는 Response로 두번째 문단이 Headers, 세번째 문단이 Body이며 각각에 서버로부터 받은 정보들 상태코드나 각종 키-값들의 형태로 Headers에 담겨있고, Body에 담아서 온 데이터가 세번째 문단에 있다.
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관련해서는 잠시 유보하고 이후 과정을 진행해보려한다.
'TIL : Today I learned (or Week)' 카테고리의 다른 글
TIL 230704 : @Getter의 중요성 (허무한 단순 오류 해결) (0) | 2023.07.04 |
---|---|
WIL 230702 : JPA에 발 담그기. (0) | 2023.07.03 |
WIL 230625 : Spring 2. 전체 청사진을 엿보다 (0) | 2023.06.26 |
TIL 230623 : ERD를 알아보자 (Entity Relation Diagram) (0) | 2023.06.23 |
TIL 230622 : Dto에 값을 넣어보자 (RequestBody, ModelAttribute) (0) | 2023.06.22 |