이론

[이론] - Rest API / 웹표준 / Javascript 원시값 / 클로저 /가비지컬렉션 / 바벨 / 호이스팅

algml0703 2022. 4. 5. 22:43
반응형

REST API란

: Representational State Transfer Application Programming Interface.

rest api는 자원(Resource), 행위 (HTTP method- GET/POST/PUT/DELETE), 표현으로 구성되어있다.

클라이언트는 URI를 통해 서버에 자원을 요청하는 서버는 그에 맞추어 클라이언트에게 응답을 보내게 된다. rest api

REST API 특징

  1. 인터페이스 일관성
  2. Stateless
  3. Cacheable
  4. 계층화
  5. 클라이언트 - 서버 구조

REST API 가이드

1. URI는 정보의 자원을 표시해야 한다.
- URL내 리소스는 가능한 명사로 표현해야 한다.
- URL에 행위(method - GET/POST/PUT/DELETE...) 표현해서는 안 된다.
2. 자원에 대한 행위는 method를 통해 표현한다.
- GET : 데이터를 조회하는 경우 
- POST : 데이터를 새롭게 생성하는 경우
- PUT : 기존의 데이터를 수정하는 경우
- DELETE : 데이터를 삭제하는 경우
3. 계층관계는 "/"를 통해 이루어진다. ( domain에 / 가 사용되어서는 안 된다. /는 계층관계 표현을 위해서만 사용되어야 한다.)
4. 필요시 URI에 - (hypten)은 사용할 수 있으나, _는 사용할 수 없다.
5. URI에 파일 확장자는 포함하지 않는다.

HTTP 상태 코드

  • 2xx : 일반적으로 정상적인 처리가 된 경우이다. 
  • 3xx : 요청된 자원의 URl이 변경된 경우 보통 나타난다.
  • 4xx : 클라이언트 측의 문제가 있는 경우 나타난다.
  • 5xx : 서버에 문제가 있는 경우 나타난다.

웹 표준

웹에서 표준적으로 사용되는 기술이나 규칙을 의미한다. 

웹 표준 준수 시 장점

  • 웹 접근성 수준 향상
  • 검색 친화적 웹 사이트 구현 가능
  • 손쉬운 유지 보수 및 비용 절감 효과
  • 호환성 확보

Javascript 원시값

  • string
  • number
  • bigint
  • boolean
  • undefined
  • symbol
  • null

클로저

어떤 함수 내부에 선언도니 함수가 바깥 함수의 지역변수를 참조하는 것이 함수가 종료된 이후에도 계속 유지되는 현상을 의미한다.


가비지 컬렉션 (garbase collection)

메모리 관리 기법 중의 하나, 프로그램이 동적으로 할당했던 메모리 영역 중 필요없게 된 영역을 해제하는 기능을 의미한다.

** 자바스크립트의 가비지 컬렉션 기준

자바스크립트는 도달가능성에 따라 메모리 관리가 수행된다., 끊임없이 가비지컬렉터가 동작하며, 모든 객체를 모니터링하고, 도달 불가능한 객체를 삭제한다.


바벨 (bael)

자바스크립트 컴파일러로, 브라우저가 해석하지 못하는 자바스크립트 문법을 브라우저가 이해할 수 있도록 변환해주는 역할을 한다.


호이스팅

인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미한다.  자바스크립트에서는 var로 선언한 경우, 선언 전에 해당 변수를 사용시 undefined가 출력된다. 변수를 스코프의 {}의 최상단으로 끌어와 선언하고, 해당 변수에 대한 초기화는 본래의 위치에서 이루어지게 된다.

// var name 으로 선언된 것과 같이 작용한다.
console.log(name);
var name = 'algml';
var age = 26;
// 콘솔에는 undefined가 뜬다. name이 최상단에서 선언된 것처럼 작용 후 algml값으로 초기화 되기 전에 해당 변수값이 사용되었기 때문에 

// 이유 --> 위의 코드는 실행시 아래와 같이 실행됨
var name = undefined;
var age = undefined;

// 먼저 선언되고
console.log(name);
// undefined

name = 'algml';
age = 26;
console.log(name);
// algml
반응형