Basic/Network

Http 메소드 (Get,Post,Delete,Header..)

mimimimamimimo 2020. 1. 31. 08:32

HTTP: 웹상에서 클라이언트와 서버 간에 요청/응답으로 데이터를 주고 받을 수 있는 프로토콜.

클라이언트->서버(요청) , 클라이언트<-서버(응답) 일 때, 요청을 수행할 때 취해야하는 방식을 http메소드로 정하는 것이다.

 

GET: 가져오다, 서버로부터 정보를 조회하기 위해 설계된 메소드. 

how? 요청시 필요한 데이터를 쿼리스트링 형식으로 header에 담는다. 

쿼리스트링이란, URL의 끝에 ? 와 함께 키,값 쌍으로 파라미터를 붙여준 문자열이다.(&로 여러개 가능)

 

www.mimimimamimimo.com/resource?name=value1&name=value2  <==이게 바로 header!!

 

issue! 이미지 같은 정적 컨텐츠는 데이터 양이 크고, 변경된 일이 적기 때문에 동일한 요청이 발생했을 경우 서버로 요청을 보내지 않고 캐시된 데이터를 사용한다. 그래서 정적컨텐츠가 캐시돼 컨텐츠를 변경해도 바뀌지 않는 경우가 종종 발생한다. 

sql injection 발생가능!

 

when?  게시글을 조회하는 기능

 

POST: 게시하다, 서버의 정보를 수정하기 위해 설계된 메소드. 

 

how? 요청시 필요한 데이터를 body에 숨겨서 보낸다.

 

issue! GET보단 보안성이 있지만 그래도 크롬 개발자도구 등으로 요청 내용을 확인할 수 있으므로 민감한 데이터라면 암호화가 필요하다. 그리고, 요청 데이터의 타입을 헤더에서 표시해야한다. 그렇지 않으면 타입을 유추해야 하기 때문이다.

 

when? body는 길이의 제한이 없기 때문에 대용량 데이터를 넣어서 보낼 때 쓴다.

게시글을 생성하는 기능

 

즉. GET은 동일한 연산을 여러번 수행해도 동일한 결과가 나오고

POST는 동일한 연산이라도 다른 결과를 응답할 수 있다.

 

 

DELETE: 지우다, 00블로그를 지워달라

 

HEADER: 서버의 헤더만 읽어와 달라.

 

...그 외에도 다양한 http 메소드가 존재한다.

 

=>get,post,delete...등 메소드들이 동사의 역할을 한다. 이런 꼴을 취하는 것이 REST 구조!

=>브라우저의 주소창은 GET방식의 요청일뿐이다. POST방식을 사용해서 보내고 싶으면, body에 숨기는 작업이 필요하기 때문에 특정 도구가 필요하다(그거그거)

=>html 첫 줄에 get,post를 지정하는 부분이 있다.

 

더보기

직접 API 작성해보고 post방식으로 요청도 해보는게 중요한 것 같다. json과 html과 본문이 무엇을 뜻하는지, 브라우저가 어떻게 이것을 읽는지 아는 것은 직접 해보며 알아야 한다. 

외우지 말고, 무언가 시험을 위해서가 아니라 내가 실제로 쓰기 위해 알아가는 것임을 명심하자.

그러면 자연스레 단순구현이 아닌 쓰는 목적에 맞는 것을 쓸 수 있을 것이다!