TIL30: ReST API / CommonJS

Charlie·2020년 12월 7일
0

Immersive Course TIL

목록 보기
30/39
post-thumbnail

ReST(Representational State Transfer)

  • 웹 서비스를 만드는데 사용되는 제약(constraint) 모음
  • 웹을 망가뜨리지 않고 HTTP를 개선하기 위해 리소스마다 서로 다른 API 규칙을 적용
  • ReST에서 정보의 가장 핵심적인 추상화는 Resource
  • 이름 붙일 수 있는 정보면 어떤 것이든 리소스가 될 수 있음

Constraints

  • Client-Server : HTTP
  • Stateless : HTTP
  • Cacheable : HTTP
  • Uniform Interface : HTTP
  • Layered System : HTTP
  • Code on Demand(Optional) : JavaScript

Best Practices
1. 리소스를 나타내는 데 명사를 사용
- 4가지 대분류 : collection, document, store, controller

/* 차례대로 collection, document, store, controller */
/user-management/users
/user-management/users/{id}
/cart-management/users/{id}/carts
/cart-management/users/{id}/cart/checkout
  1. 일관성이 핵심
    • 계층 구조를 나타낼 때는 '/' 사용
    • URI 가독성을 높이기 위해 '-' 사용
    • URI에 소문자 사용
    • URI 끝에 '/' 사용하지 말 것
    • '_'은 사용하지 말 것
    • 파일 확장자 사용하지 말 것
  2. CRUD기능 이름은 URI에 사용하지 말 것: GET, POST, PUT, DELETE
  3. filter가 필요하면 Query Component 사용
/* Query 사용*/
/managed-devices?region=USA&brand=XYZ&sort=installation-date

CommonJS

  • 모든 모듈은 자신만의 독립적인 실행 영역이 있음
  • 모듈 정의는 전역객체인 exports 객체를 이용
  • 모듈 사용은 require 함수를 이용

module.exports VS exports

(1) module.exports

// hello.js
exports.anything = function() {
  console.log('I am anything.');
};
// hello-runner.js
const hello = require('./hello');
console.log(hello); // {anything: Function}
hello.anything(); // I am anything.

(2) exports

// hello.js
module.exports.anything = function() {
  console.log('I am anything.');
};
// hello-runner.js
const hello = require('./hello');
console.log(hello); // {anything: Function}
hello.anything(); // I am anything.

exportsmodule.exports사용을 도와주는 helper로써 단지 module.exports를 참조할 뿐임

// hello.js file
module.exports = {a: 1}
// hello-runner.js
const hello = require('./hello');
console.log(hello); // {a: 1}
// hello.js file
exports = {a: 1}
// hello-runner.js
const hello = require('./hello');
console.log(hello); // { }

자료 출처: 코드스테이츠(CodeStates)

0개의 댓글