[TIL - REST API, JSON]

..·2023년 4월 25일
0

TIL

목록 보기
16/22
post-thumbnail

REST API

  • REpresentational State Transfer 의 약자로서, 어떤 자원에 대해 CRUD를 진행할 수 있게 HTTP Method를 사용하여 요청을 보내는 것.
  • 이 때 요청을 위한 자원은 특정한 형태로 표현한다.

→ 간단히 말하면 URI를 통해 정보의 자원을(only 자원만을) 표현하고, 자원의 행위는 HTTP Method로 명시한다는 것이라고 할 수 있다.

  • 자원 : URI
  • 행위 : HTTP Method
  • 표현
GET/users/3/profile

// user 중에서 3번 아이디를 갖고있는 사람의 profile을 줘 라는 뜻임을 알 수 있다.ㅈ
  • 나쁜 예시
GET / members / delete / 1
  • 좋은 예시
DELETE / members / 1

규칙

  • URI는 명사를 사용하고 소문자로 작성되어야 한다.
  • 명사는 복수형을 사용한다
  • URI의 마지막에는 /을 포함하지 않는다.
  • URI에는 언더바가 아닌 하이픈을 사용한다.
  • URI에는 파일의 확장자를 표시하지 않는다.

RESTFul하다는 것?

  • 위의 조건들을 만족시킨 통신 설계 상태를 말한다.
  • 누가 보더라도 이해하기 슆고 사용하기 쉬운 Rest API

RESTFul하지 못한 경우

  • CRUD의 기능을 모두 POST method로만 이용하는 경우
  • URI에 행위에 대한 부분이 들어가는 경우 (/classes/create People)

path variable vs query parameter

  • REST한 개발을 하다보면 GET 메소드를 이용하여 데이터를 가져올 때 등의 경우에서 항상 나오는 주제이다.

path variable

  • /users/10
  • 경로 자체에 변수를 사용한 방법
  • 전체 데이터 또는 특정 하나의 데이터를 다룰 때처럼. 리소스를 식별하기 위해 사용된다.

query parameter

  • /users?user_id=10
  • 데이터를 정렬하거나 필터링 하는 경우 더 적합하다.

JSON

JSON (JavaScript Object Notation)

  • 자바스크립트 객체 문법에 토대를 둔 문자 기반의 데이터 교환 형식
  • 일반적인 JSON 구조는 자바스크립트 객체 리터럴 작성법을 따른다.
  • 자바스크립트의 원시 자료형인 문자열, 숫자, 불리언을 가질 수 있고 중첩된 계층 구조 또한 가질 수 있다.
  • 자바스크립트 객체 형태와 완전히 동일하지는 않다. 작은따옴표가 아닌 큰 따옴표만 허용.

메서드

  • JSON → 문자열 형태 → 서버-클라이언트 간 데이터 전송 시 사용
  • 하지만 두 경우를 위해 파싱(parsing) 과정이 필요하다.
    1. JS 객체를 JSON 형태로 전송
    2. JSON 형태를 JS객체 형태로 사용

stringify()

: 자바스크립트 객체 → JSON 문자열 변환. 네트워크를 통해 객체를 JSON 문자열로 변환할 때 주로 사용한다.

console.log(JSON.stringify({ x: 5, y: 6 }));
// Expected output: "{"x":5,"y":6}"

console.log(JSON.stringify([new Number(3), new String('false'), new Boolean(false)]));
// Expected output: "[3,"false",false]"

console.log(JSON.stringify({ x: [10, undefined, function(){}, Symbol('')] }));
// Expected output: "{"x":[10,null,null,null]}"
// undefined, function(){}, Symbol('')는 null로 들어간다. 지원이 안되는 자료구조도 있음.

console.log(JSON.stringify(new Date(2006, 0, 2, 15, 4, 5)));
// Expected output: ""2006-01-02T15:04:05.000Z""

parse()

: JSON 문자열 → 자바스크립트 객체 변환. 네트워크 통신의 결과를 통해 받아온 JSON 문자열을 프로그램 내부에서 사용하기 위해 JS 객체로 변환할 때 사용한다.

const json = '{"result":true, "count":42}';
const obj = JSON.parse(json);

console.log(obj.count);
// Expected output: 42

console.log(obj.result);
// Expected output: true

※JSONPlaceholder를 사용하여 비동기통신 실습을 해볼 수 있다.

0개의 댓글