알고리즘 주차가 끝나고 드디어 주특기(Spring)주가 시작되었다.
현재 가장 큰 문제는
내가 지금 모르는 이 문제가 과연 Spring에 대한 것일까 Java에 대한 것일까
Spring을 막 시작한 지금 위화감? 이 간극을 느껴서 얼마나 다행인지 모른다
Java 공부를 소홀히 하면 안되겠다고 다짐했다.
자꾸만 얘기하게 되어서 이상하지만
TIL, WIL 결과물에 너무 집착하지말고 TIL, WIL을 작성하는 것 그 자체에 의미가 있다고 느꼈다.
아무리 좋은 글이라고 해도 그 글 그대로를 복붙해온다면 내 학습에 도움이 안된다. 내것으로 소화하는 과정이 없다!
짧더라도 내가 이해한 것 그대로, 내가 직접, 적어야 의미가 있지 않겠나
꾸미지도 않기로 했다. 하다보면 이도 늘겠지
이 이후로 작성되는 모든 글은 부족할지언정 내가 적은 글로만 채우겠다.
한가지 더, 블로그를 작성하면서 나는 백엔드를 지망하길 정말 잘했다고 생각했다.
HTTP
1. HTTP 란?
HTTP란 Hyper Text Transfer Protocol의 약자로 클라이언트/서버 간 데이터를 주고 받기 위한 통신 규약(프로토콜)중 하나이다.
- 예전에 한 교수님이 논문을 좀 더 쉽게 비교, 열람하고 싶은 생각에 개발이 시작되었다고 한다.
1-1 그럼 HTTPS는?
HTTPS는 HTTP에서 (Secure) 암호화가 추가된 프로토콜이다.
암호화(https)로서 데이터를 전송하는데 안전해졌지만 속도가 http에 비해 느리고(기술의 발달로 요즘엔 거의 차이가 없다고 한다)
암호화 과정에서 인증서 발급,관리등 추가로 비용이 들어가기 때문에 데이터에 안전이 필요없다면 http를 사용해도 무방하겠다.
추후해 좀 더 자세히 알아볼 예정이다.
코딩 공부를 시작한지 얼마되지 않았지만 코딩에 있어서 무언가를 이해할때
내가 지금 공부하려는 이것이 없었다면 얼마나 불편했을까?로 접근하면 쉽게 이해가 가능한 것 같다.
만약 http라는 규약, 약속이 없었다면??
우리는 클라이언트마다 서버마다 요구, 존재하는 모양대로 전부 맞춰줘야 했을 것이다.
2. HTTP가 데이터를 주고 받는 방법
이름에서부터 벌써 알 수 있듯이 http에서는 요청(Request)와 응답(Response)로 데이터를 주고 받는다.
예) 내(클라이언트)가 브라우저(구글 크롬)를 통해 구글 홈페이지에 들어가려고 한다면
브라우저는 서버에게 해당 페이지의 정보(URL등)을 요청(Request)한다.
서버는 요청한 접근이 올바르면 데이터를 응답(Response)해준다.
브라우저는 응답 받은 데이터를 브라우저에 그려준다.
우리는 그 화면을 보고 있던 것이다.
3. HTTP Method
HTTP의 Method로는 크게 5가지가 있는데
- GET -> 서버 특정 리소스를 요청
- POST -> 서버에 데이터 전송
- PUT -> 서버에 새로운 리소스를 생성, 수정
- DELETE -> 특정 리소스 삭제
- PATCH -> 서버에 리소스 일부를 수정
꽤나 직관적인 Method들이다. 이름 그대로를 수행하는데 GET, DELETE는 알겠는데
post, put, patch의 차이점은 무엇있까
3-1 POST, PUT, PATCH의 차이점
- POST는 데이터를 데이터를 Body에 담아 서버에 전송해준다. CRUD에 Creat에 매칭!!
- PUT은 수정, 생성이 가능하다. PUT은 CRUD에 Update와 매칭한다고 볼 수 있겠다.
- PATCH 또한 수정 기능을 하는데 무엇이 다를까. PATCH는 리소스의 일부 수정이 가능하다.
{
id : 1,
username : "철수"
}
여기서 "철수"를 영희로 바꾼다면, PATCH로
{
username : "영희"
}
이렇게 보내주면 되지만, 해당 코드를 PUT으로 요청한다면 id는 사라질 것이다. PUT은 모든 속성을 수정하기 때문이다.
4. URI와 URL
이 둘은 혼동하기 쉽지만 엄연히 다른 존재이다.
코딩을 공부하면서 느낀것인데 이 코드세상의 사람들은 절대, 절대로 중복을 가만히 두지 않는다.
만약 둘이 같은 그냥 같은, 비슷한 개념이였다면 지금까지 살아남지 못 했다.
일단! 이름이 다르다면 알아둬야한다. 무엇이 다른지
URI는 리소스를 나타내는 고유한 식별자,
URL은 리소스의 위치를 나타내는 식별자!
고로, urI ⊆ urL (일부로 대소문자를 나눠 표현했다)
MVC
1. MVC 란?
Model - View - Controller의 약자로, 소프트웨어 디자인 패턴 중 하나다.
1-1. 소프트웨어 디자인 패턴이란?
소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들에 대한 해결책이다.
즉, 코딩의 역사 속 까마득한 선배들의 정말 다양한 삽질의 결과물이라 할 수 있겠다.
"Don't reinvent the wheel" 바퀴를 다시 발명하지 마라 이 유명한 말이 여기서 나왔을줄이야..
2. Model - View - Controller
- Model 은 데이터와 비즈니스 로직을 담당한다
- Controller 는 Model과 View 사이의 상호작용을 조정하고 제어한다.
- View 사용자 인터페이스를 담당한다
사용자 입력해줘! -> 오케이! Controller 해줘! -> 오케이! Model 다했어! -> 오케이! Controller 보여줘! -> 오케이! View -> 쨘!⭐️
이렇게 각자의 역활을 나눠 분담함으로서 코드의 재사용성과 유지보수성을 높이고
개발자간의 협업을 편리하게 해준다.
MVC는 지금 과제 작업 중 작성할 TIL과 밀접한 연관이 있기에 여기까지 정리하겠다.
'TIL, WIL' 카테고리의 다른 글
23.04.18 Today I Learned (0) | 2023.04.19 |
---|---|
23.04.17 Today I Learned (0) | 2023.04.18 |
23.04.15 Today I Learned (0) | 2023.04.16 |
23.04.14 Today I Learned (0) | 2023.04.15 |
23.04.13 Today I Learned (0) | 2023.04.13 |