HTTP 메소드에 대해 설명해 주세요.
=>HTTP(하이퍼텍스트 전송 프로토콜)는 웹 상에서 데이터를 주고받기 위한 프로토콜로, 다양한 메소드를 제공합니다. 이 메소드들은 클라이언트와 서버 간의 통신에서 사용되며, 각각의 메소드는 특정한 목적을 수행합니다. 주요 HTTP 메소드에 대한 간단한 설명은 다음과 같습니다:
GET: 리소스를 요청하기 위한 메소드로, 주로 데이터를 가져올 때 사용합니다. URL에 데이터를 첨부하여 전송하며, 캐시가 가능하고 브라우저 히스토리에 남습니다. 요청된 데이터는 일반적으로 쿼리 매개변수나 경로에 포함됩니다.
POST: 리소스를 생성하기 위한 메소드로, 서버로 데이터를 제출할 때 사용합니다. 주로 양식(form) 데이터나 파일 업로드 등에서 활용되며, 브라우저 히스토리에는 남지 않습니다.
PUT: 리소스를 업데이트하기 위한 메소드로, 전체 엔터티를 전송하여 리소스를 갱신합니다. 클라이언트가 엔터티의 모든 내용을 알고 있을 때 사용됩니다.
DELETE: 리소스를 삭제하기 위한 메소드로, 지정된 리소스를 제거합니다.
PATCH: 리소스를 부분적으로 업데이트하기 위한 메소드로, 엔터티의 일부를 전송하여 리소스를 수정합니다. 일반적으로 전체 리소스를 전송하는 것보다 경제적입니다.
HEAD: GET과 유사하지만, 서버는 응답 본문을 제공하지 않고 헤더 정보만을 반환합니다. 주로 리소스의 메타데이터 확인에 사용됩니다.
OPTIONS: 서버가 지원하는 메소드나 특정 리소스에 대한 통신 옵션을 확인하기 위한 메소드입니다.
TRACE: 클라이언트가 보낸 요청 메시지를 그대로 돌려받기 위한 메소드로, 주로 디버깅 용도로 사용됩니다.
CONNECT: 프록시를 통해 두 서버 간에 터널을 맺기 위한 메소드로, 일반적으로 HTTPS 연결을 설정할 때 사용됩니다.
이러한 HTTP 메소드는 RESTful API 등에서 자원의 생성, 읽기, 갱신, 삭제(CRUD) 작업을 구현하는 데 사용됩니다.
예시의 코드를 실행할 때, 콘솔에 출력될 값과 그 이유를 설명해 주세요.
// 1번
let num = 1;
// 2번
setTimeout(() => {
num = 2;
}, 0);
// 3번
num = 3;
// 4번
console.log(num);
num 변수를 1로 초기화합니다.
setTimeout 함수를 사용하여 비동기 작업을 수행합니다. 이 함수는 지정된 시간이 지난 후에 콜백 함수를 실행합니다. 여기서는 시간을 0으로 설정했지만, 실제로는 브라우저나 Node.js의 이벤트 루프에서 다른 작업이 처리된 후에 실행됩니다. 따라서 현재 코드 흐름에서는 다음 줄로 넘어갑니다.
num 변수를 3으로 업데이트합니다.
console.log(num)을 호출하여 현재 num의 값을 콘솔에 출력합니다.
실행결과 3
이유
setTimeout은 비동기 함수로, 현재 코드 흐름을 차단하지 않고 다음 코드를 실행합니다.
따라서 num = 3이 먼저 실행되고, 이후 setTimeout의 콜백이 실행됩니다. 하지만 이미 console.log(num)이 실행된 이후이므로 출력 결과는 업데이트된 num 값인 3이 됩니다.