본문 바로가기

Study/개발일지

[백엔드스터디]1주차 학습일지

- get과 post 차이 

- git 개념 학습

- 미니프로젝트 작성 (파이썬 , 몽고db 활용) 

 

1. get , post 

 

HTTP 메소드 중 GET방식과 POST 방식 차이

 

get방식이든 post방식이든 둘 다 브라우저가 서버에 요청하는 것입니다.

 

GET 방식

GET은 요청을 전송할 때 필요한 데이터를 Body에 담지 않고, 쿼리스트링을 통해 전송합니다.

URL의 끝에 ?와 함께 이름과 값으로 쌍을 이루는 요청 파라미터를 쿼리스트링이라고 부릅니다. 만약, 요청 파라미터가 여러 개이면 &로 연결합니다. 쿼리스트링을 사용하게 되면 URL에 조회 조건을 표시하기 때문에 특정 페이지를 링크하거나 북마크할 수 있습니다.

쿼리스트링을 포함한 URL의 샘플은 아래와 같습니다. 여기서 요청 파라미터명은 name1, name2이고, 각각의 파라미터는 value1, value2라는 값으로 서버에 요청을 보내게 됩니다.

 

www.example-url.com/resources?name1=value1&name2=value2


그리고 GET은 불필요한 요청을 제한하기 위해 요청이 캐시될 수 있습니다. js, css, 이미지 같은 정적 컨텐츠는 데이터양이 크고, 변경될 일이 적어서 반복해서 동일한 요청을 보낼 필요가 없습니다. 정적 컨텐츠를 요청하고 나면 브라우저에서는 요청을 캐시해두고, 동일한 요청이 발생할 때 서버로 요청을 보내지 않고 캐시된 데이터를 사용합니다. 그래서 프론트엔드 개발을 하다보면 정적 컨텐츠가 캐시돼 컨텐츠를 변경해도 내용이 바뀌지 않는 경우가 종종 발생합니다. 이 때는 브라우저의 캐시를 지워주면 다시 컨텐츠를 조회하기 위해 서버로 요청을 보내게 됩니다.
(이게 바로 f12누르고 새로고침 오른쪽 누르는 거)

 

 

  • GET 요청은 캐시가 가능하다. 
  •  : GET을 통해 서버에 리소스를 요청할 때 웹 캐시가 요청을 가로채 서버로부터 리소스를 다시 다운로드하는 대신 리소스의 복사본을 반환한다. HTTP 헤더에서 cache-control 헤더를 통해 캐시 옵션을 지정할 수 있다.
  • GET 요청은 브라우저 히스토리에 남는다.
  • GET 요청은 길이 제한이 있다.
  • GET 요청은 중요한 정보를 다루면 안된다. (보안)

 

 

 

 

POST 방식

POST는 리소스를 생성/변경하기 위해 설계되었기 때문에 GET과 달리 전송해야될 데이터를 HTTP 메세지의 Body에 담아서 전송합니다. HTTP 메세지의 Body는 길이의 제한없이 데이터를 전송할 수 있습니다. 그래서 POST 요청은 GET과 달리 대용량 데이터를 전송할 수 있습니다. 이처럼 POST는 데이터가 Body로 전송되고 내용이 눈에 보이지 않아 GET보다 보안적인 면에서 안전하다고 생각할 수 있지만, POST 요청도 크롬 개발자 도구, Fiddler와 같은 툴로 요청 내용을 확인할 수 있기 때문에 민감한 데이터의 경우에는 반드시 암호화해 전송해야 합니다.

그리고 POST로 요청을 보낼 때는 요청 헤더의 Content-Type에 요청 데이터의 타입을 표시해야 합니다.

Content-Type의 종류로는 application/x-www-form-urlencoded, text/plain, multipart/form-data 등이 있다

 

 

데이터 타입을 표시하지 않으면 서버는 내용이나 URL에 포함된 리소스의 확장자명 등으로 데이터 타입을 유추합니다. 만약, 알 수 없는 경우에는 application/octet-stream로 요청을 처리합니다.

 

 

  • POST 요청은 캐시되지 않는다.
  • POST 요청은 브라우저 히스토리에 남지 않는다.
  • POST 요청은 데이터 길이에 제한이 없다.

 

 

 

GET 과 POST 의 차이점 

 

 GET과 POST의 특징만 보아도 차이가 나긴하지만 추가적으로 차이점을 정리해보면 다음과 같다.

  • 사용목적 : GET은 서버의 리소스에서 데이터를 요청할 때, POST는 서버의 리소스를 새로 생성하거나 업데이트할 때 사용한다.
  • DB로 따지면 GET은 SELECT 에 가깝고, POST는 Create 에 가깝다고 보면 된다.
  • 요청에 body 유무 : GET 은 URL 파라미터에 요청하는 데이터를 담아 보내기 때문에 HTTP 메시지에 body가 없다. POST 는 body 에 데이터를 담아 보내기 때문에 당연히 HTTP 메시지에 body가 존재한다.

2. git 개념 

 

 

Git 이란 무엇인가?

Git이란 분산형 버전 관리 시스템(Version Control System) 의 한 종류이며, 빠른 수행 속도에 중점을 둔다.

우리가 레포트를 제출한다고 가정했을때, 처음에 저장했을때 'report.txt'라고 저장을 했다가 수정을 하면서 'report_final.txt'로 저장하고 또 수정을 거치면서 'report_final_final.txt'...로 수정을 하게 되는 경험이 있었을 것이다. 여기서 이 파일들을 복사, 백업, 저장 등을 한것이고, 이러한 것을 버전 관리라고 부른다.

 

버전 관리란?

버전관리 시스템은 파일변화를 시간에 따라 기록했다가 나중에 특정시점의 버전을 다시 꺼내올 수 있는 시스템이다.

  • 각 파일을 이전 상태로 되돌릴 수 있다.
  • 프로젝트를 통째로 이전 상태로 되돌릴 수 있다.
  • 시간에 따라 수정 내용을 비교해 볼 수 있다.
  • 누가 문제를 일으켰는지도 추적할 수 있다.
  • 누가언제만들어낸이슈인지도알수있다.
  • 파일을 잃어버리거나 잘못 고쳤을 때도 쉽게 복구할 수 있다.

 

Git 의 필요성

  1. 나와 내 동료가 같은 웹사이트에서 동시에 같은 'A'페이지를 업데이트 하고 있다고 하자.
  2. 나는 무언가를 변경하고 저장한 다음 웹사이트에 'A'페이지를 업로드 한다.
  3. 그런데 이때 동료가 동시에 'A'페이지에서 작업을 할 때 문제가 발생된다.
  4. 만약 확인하지 않고 동시에 작업을 한다면 누군가의 작업은 겹체 쓰여질 것이고 지워질 것이기 때문이다.
  5. Git은 이와 같은 일을 사전에 방지해준다.
  6. 나와 동료는 같은 페이지에 각자 수정사항을 업로드 할 수 있고, 두개의 복사본을 저장한다.

즉, 모두 같은 환경에서 개발하여 불필요한 시간을 없애고 서로 주고 받는 와중에 일어나는 충돌을 최소화 하는 것이라고 말할 수 있다.

프레임워크를 갖추고 공통으로 쓰는 코드들을 미리 넣어두고, 테스트 코드나 샘플코드들을 넣어주어서 프로젝트 개발 시작하기전에 팀원 모두 같은 코드로 테스트할 수 있는 환경도 제공할 수 있다.

 

Git 의 장점

  • 소스 코드를 주고 받을 필요 없이, 같은 파일을 여러 명이 동시에 작업하는 병렬 개발이 가능하다.
    (브랜치를 통해 개발한 뒤, 본 프로그램에서 합치는 방식(Merge)으로 개발을 진행할 수 있다.)
  • 분산 버전 관리이기 때문에 인터넷이 연결되지 않은 곳에서도 개발을 진행할 수 있고, 중앙 저장소가 날라가 버려도 원상복구할 수 있다.
  • 팀 프로젝트가 아닌, 개인 프로젝트일지라도 Git을 통해 버전 관리를 하면 체계적인 개발이 가능해지고, 프로그램이나 패치를 배포하는 과정도 간단해진다.

 

3. 미니 프로젝트 구현 

 

   먼저 파이썬을 통해 vscode 툴을 활용하여 

 

  .py 파일과 venv 패키지 설치후 

 

html 페이지를 배포하는 식으로 개발하였음

728x90