본문 바로가기

📂 위클리 페이퍼

[코드잇 스프린트 5주차] 위클리 페이퍼

📌 자바스크립트 this에 대해 설명해 주세요.

this는 함수를 호출한 객체를 가리키는 키워드이다. 전역 공간에서 this는 window 객체(전역 객체)를 가리킨다. 만약 함수를 단순 호출했다면 this는 전역 객체를 가리킨다. 만약 객체가 메소드를 호출했다면 메소드를 호출한 객체가 this가 된다. arrow function의 경우에는 arrow function을 감싸는 상위 스코프에서 유효한 this를 찾게 된다. 즉, arrow function은 호출한 객체를 가리키지 않으므로 객체의 메소드를 만들 때는 arrow function 대신 일반 함수를 사용하는 것이 좋다.

이벤트 핸들러에서 this는 이벤트를 발생시킨 요소가 된다. new 키워드와 함께 함수를 작성하면 그 함수는 생성자가 되며 생성자로 함수를 사용할 때 this는 그 생성자로 새로 만들어진 객체가 된다.


📌 HTTP 메소드에 대해 설명해 주세요.

HTTP 메소드란 클라이언트와 서버 사이에서 request와 response가 이루어지는 방식을 말한다. HTTP 메소드는 총 8가지 종류가 있다.

GET

  • 리소스를 조회, 즉 데이터를 받기 위해 사용하는 메소드이다.
  • 예를 들어 URL을 입력하거나 링크를 클릭하는 경우도 GET 요청이다.
  • GET 요청은 '멱등성'이라는 개념을 지니고 있기 때문에 동일한 리퀘스트를 반복해서 전송해도 동일한 리스폰스가 돌아온다.
  • 쿼리스트링을 통해 서버에 데이터를 전달한다. 그러나 쿼리스트링은 데이터 정보가 무방비 상태로 노출되므로 이를 유의해야 한다.
  • 서버의 데이터 변경은 일어나지 않는다.

POST

  • 새로운 리소스(데이터)를 생성하거나 기존의 리소스를 수정하기 위해 서버에 데이터를 보내는 메소드이다.
  • 메시지 body에 쿼리 파라미터 형식(key-value)으로 서버에 데이터를 전달한다. GET의 쿼리스트링 방식에 비해 외부로 노출되지 않으므로 보안상 장점이 있다. 또한 메시지 길이의 제한이 없고, 문자열 뿐만 아니라 객체도 전송이 가능하다.
  • 일반적으로 캐싱을 사용하지 않으므로 조회 속도가 느리다. (GET은 캐싱 사용)
  • 멱등성을 가지지 않는다. -> 동일한 리퀘스트를 반복하더라도 동일한 응답 보장 X
  • 서버의 데이터 변경이 일어날 수 있다.

PUT

  • 기존 리소스를 대체(수정)하는 메소드이다.
  • 만약 데이터가 존재하면 덮어쓰고, 존재하지 않으면 새로 생성한다.
  • 데이터를 대체해야 하기 때문에 클라이언트는 리소스의 구체적인 전체 경로를 보내주어야 한다.
  • 부분 수정이 불가능하다. 예를 들어 A, B라는 데이터가 존재할 때 C라는 데이터를 담아 PUT 요청을 한다면 기존의 A, B는 날라가고 C만 남는 개념이다.
  • 멱등성을 가진다.

DELETE

  • 저장한 리소스를 삭제하는 메소드이다.
  • 멱등성을 가진다.

PATCH

  • PUT처럼 리소스를 수정하는 메소드지만, PUT이 리소스 전체를 변경한다면 PATCH는 리소스 일부만 변경이 가능하다. 즉 A와 B를 모두 지우지 않고 B만 C로 변경이 가능하다는 것이다.
  • PATCH를 지원하지 않는 서버가 있을 수 있다.
  • 멱등성을 지니지 않는다.

위의 5가지가 주로 사용되며 아래는 추가로 알아두면 좋을 메소드들이다.

HEAD

  • 특정 리소스를 GET으로 요청했을 때 리스폰스 중 바디 부분은 제외하고 헤더만 받기 위한 메소드이다.
  • 실제 데이터가 아니라 데이터에 관한 정보만 얻을 때 사용된다. (주로 찾을 때 사용)
  • 불필요한 리퀘스트를 제한하기 위해 리퀘스트가 캐시될 수 있다.
  • 멱등성을 지닌다.

OPTIONS

  • 주어진 URL 또는 서버에 대해 통신하는데 허용된 옵션을 받기 위한 메소드이다.
  • 본 요청을 하기 전에 안전한지 미리 검사해보는 데 사용된다.

CONNECT

  • 요청한 리소스에 대해 양방향 연결을 시작하는 메소드이다.
  • 주로 CORS에서 사용된다.
  • SSL을 사용하는 웹사이트(HTTPS)에 접속하는데 사용될 수 있다.