웹을 지탱하는 기술 스터디 4회차

JSON

  • JavaScript Object Notation의 약자로, RFC 4627이 규정하는 데이터를 기술하기 위한 언어이다.
  • 기법은 JavaScript지만 “심플함”으로 인해 많은 언어에서 라이브러리를 제공하고 있다. 그래서 프로그래밍 언어 간에 데이터를 주고받을 수 있다.

미디어 타입

  • JSON의 미디어 타입은 ‘application/json’입니다.
  • UTF-8, UTF-16, UTF-32중 하나로 인코딩하도록 되어있다 특별한 이유가 없는 한은 UTF-8로 사용하는 것이 무난하다.

확장자

  • JSON 파일에는 ‘json’이라는 확장자를 이용하는 것을 추천합니다. 명시적으로 JSON 표현을 얻고자 할 경우 URI에 ‘.json’을 붙이도록 리소스를 설계하면 좋다.

자료형

  • object - 이름과 값의 집합
  • array - 배열은 순서를 가진 값의 집합입니다. 0개 이상의 값을 가질 수 있습니다.
  • string - 반드시 ""로 감싸준다.
  • number - 정수와 부동소수점이 모두 포함된다.
  • boolean - 값이 참이냐 거짓인가를 취하는 부울린형은 리터럴로 준비되어 있다.
  • null - 리터럴로 준비되어 있으며 반드리 ‘null’이라고 소문자로 써야한다.
  • 링크 - 단순히 URI를 문자열 값으로 가지는 것이 가장 간단하다.

리소스 설계란 무엇인가

  • 리소스 설계란 클라이언트와 서버 간의 인터페이스의 설계, 즉 웹 서비스와 웹 API의 외부설계입니다. 어떻게 리소스를 분할하고, URI로 이름을 붙이고, 상호링크를 가지게 할지가 리소스 설계의 핵심이 됩니다.
  • 리소스를 설계할 때 웹서비스와 웹API를 나누어 생각하지 않 는다는 것입니다.
  • 소프트웨어 개발의 세계에는 다양한 설계방식이 존재합니다. 객체지향언어라면 객제치향설계로 설계하고, 유스케이스를 작성하거나 클래스 구조를 결정합니다. 또한, 관계형 데이터베이스 관리 시스템 이라면 ER다이어그램 등을 사용하면서 각종 설계방법으로 테이블의 스키마를 결정합니다. 하지만, 리소스 설계에는 아직 표준적인 설계방법이 존재하지 않습니다. 유일하게 존재하는 것은 ‘RESTful 웹 서비스’라는 책에서 추천하는 ‘리소스 지향 아키텍처’ 입니다.
  • 웹 서비스에서 제공할 데이터를 특정한다.
  • 데이터를 리소스로 나눈다.
  • 리소스에 URI로 이름을 부여한다.
  • 클라이언트에 제공할 리소스의 표현을 설계한다.
  • 링크와 폼을 이용해 리소스와 리소스를 연결한다.
  • 이벤트의 표준적인 코스를 검토한다.
  • 에러에 대해 검토한다.

어드레스 가능성

가장 중요한 성질은 어드레스 가능성입니다. 어드레스 가능성이란 URI만 있으면 리소스를 한결같이 가리킬 수 있다는 성질이고, URI의 이 성질이 없다면 접속성과 Uniform 인터페이스를 구현할 수 없습니다.

접속성

다음으로 중요한 것은 접속성입니다. 리소스를 링크로 접속하여 하나의 애플리케이션을 이룬다는 성질은 하이퍼미디어로서 웹의 근간을 떠받치고 있습니다. 링크를 따라갈 수 없는 웹서비스는 아주 불편할 것입니다.

유니폼 인터페이스

세번째로 중요한 것은 유니폼 인터페이스입니다. 유니폼 인터페이스는 리소스가 어드레스 가능하며 또한, 올바로 접속되어있는 상태가 있고서야 비로소 가치가 생기는 성질이므로 어드레스 가능성과 접속성보다 중요도가 조금은 떨어집니다.

스테이트리스성

마지막으로 스테이트리스성은 다른 3가지와 비교해 볼 때 그렇게 중요하지는 않지만, 이것은 현실의 웹 서비스에서는 Cookie에 의한 세션 관리가 거의 필수가 된 것이 이유입니다.

리소스란 웹상에 존재하는 이름이 부여된 정보를 말한다.

리소스에 URI로 이름을 부여합니다.

검색결과 리소스

검색결과 리소스는 검색 키워드의 입력을 필요로 합니다. 일반적으로 클라이언트로부터 입력을 받을 경우는 쿼리 파라미터를 이용합니다. 요즘은 사실상 ‘q’가 표준 방식이 되었습니다.

지역 리소스

지역 리소스 같은 경우에는 계층구조를 URI로 표현할 때 ’/‘를 이용합니다. ex) /도쿄도/분쿄구/코이사카와

톱레벨 리소스

톱 레벨 리소스는 이 웹 서비스의 시작지점입니다. 이러한 리소스에는 보통 가장 루트가 되는 URI를 부여합니다.