WIL

WIL - 2023.04.13

nswlah 2023. 4. 14. 00:07

금주에는 콜백함수와 HTTP에 대해서 정리해보았습니다.

 

콜백함수란?

콜백함수란 쉽게 생각하면 함수에 인자값으로 주어지는 함수를 말합니다. 예를 들어 아래 코드 샘플과 같이 plusNumber라는 함수가 있고 인자값으로 함수를 전달받으면 해당 함수를 호출하는(콜백함수) 형태의 코드가 있습니다. 여기서 인자로 주어지는 함수 func를 콜백함수라고 할수 있습니다. 그리고 plusNumber와 같은 콜백함수를 인자로 받는 함수를 고차함수라고 부릅니다,

function plusNumber(num1, num2, func) {
	let result = num1 + num2;
	func(result);
}

function resultFunc(result) {
	console.log(`결과값은 ${result}입니다.`)
}

plusNumber(2, 3, resultFunc) // 결과값은 5입니다.

콜백함수의 목적은 모듈화 되고 재사용 가능한 코드를 만들기 위한 목적입니다. 위의 예제 코드 샘플에서는 resultFunc만 사용하였지만, 용도에 따른 여러 함수들을 만들어 놓고, 이를 콜백함수로 호출해서 사용하게 되면 코드 재사용성이 증가하며 유지보수에 유리합니다.

 

콜백 함수의 또다른 특징으로는 비동기 처리가 된다는 점이 있습니다. 콜백 함수의 경우 자바스크립트 엔진의 스택에서 동기적으로 바로 처리되는 것이 아니라, 동기적인 처리들이 모두 처리될때까지 큐에 저장되어 있다가, 동기 처리가 완료되어 스택이 비게되면 처리되는 방식으로 처리됩니다.

 

HTTP란?

HTTP란 Hypertext Transfer Protocol의 약자로 인터넷을 통해 데이터를 전송하는 데 사용되는 프로토콜입니다. World Wide Web(ww)을 위한 데이터 통신의 기반이며 웹 브라우저(클라이언트)와 서버간 데이터를 교환하는 데 사용됩니다.

 

클라이언트는 서버에 HTTP 요청을 보내고 서버는 HTTP 응답으로 응답합니다. HTTP 요청은 요청 방법(GET, POST, PUT), URL, 헤더 및 메시지 본문으로 구성됩니다. 서버는 HTTP 상태 코드, 헤더 및 메시지 본문으로 응답합니다.

아래의 사진을 보시면 Start 라인 부분의 GET이 요청 방법에 해당하고, headers의 Host 부분이 URL에 해당합니다.

출처 : https://hahahoho5915.tistory.com/62

요청 방법에는 GET, POST, PUT, PATCH 등의 메소드가 있습니다.

 

1. GET

  • 서버로부터 정보를 조회하기 위해 설계된 메소드
  • 필요한 데이터를 쿼리 스트링(url 끝에 ?와 함께 이름과 값으로 쌍을 이루는 요청 파라미터)을 통해 전송
  • 요청 파라미터가 여러개이면 &로 연결
  • 서버에 영향을 주지 않으며 정보 조회만 해서 항상 같은 응답을 받음

2. POST

  • 리소스를 생성/변경하기 위해 설계된 메소드
  • 요청 헤더의 Content-Type에 요청 데이터의 타입을 표시 해야 함
  • 리소스를 생성하는 과정에서 서버에 영향을 주어, 매번 다른 응답을 받음
  • PUT과 비교하면 POST는 일반적으로 insert의 개념으로 사용

3. PUT

  • 보통 Update의 개념으로 사용
  • 클라이언트가 리소스의 위치를 명확하기 지정 함
  • 리소스를 변경하는 과정에서 서버에 영향을 주지만, 매번 같은 응답을 받음

4. PATCH

  • PUT이 전체를 업데이트 하는 의미라면, PATCH는 일부를 변경하는 용도
  • 리소스를 변경하는 과정에서 서버에 영향을 주며, 매번 다른 응답을 받음

 

정리하자면 정보를 조회(GET), 리소스를 생성(POST), 리소스 전체를 변경(PUT), 리소스 일부를 변경(PATCH)로 생각하면 됩니다.

'WIL' 카테고리의 다른 글

WIL - 2023.05.11  (0) 2023.05.11
WIL - 2023.05.02  (0) 2023.05.01
WIL - 2023.04.20  (0) 2023.04.20
WIL - 2023.04.09  (0) 2023.04.09