RESTful API와 JSON

yun·2024년 9월 5일
post-thumbnail

01. RESTful API

✅ API란?

  • API란 Application Programming Interface로 어플리케이션과 프로그래밍적으로 소통하는 방법이다.

🔎 소통방법

  • CLI(Command Line Interface): 명령줄로 소통하는 방법
  • GUI(Graphic User Interface): 그래픽으로 유저와 소통하는 방법
  • API(Application Programming Interface): 프로그래밍으로 어플리케이션과 소통하는 방법

기계와 인간간의 소통뿐만 아니라 소프트웨어와 소프트웨어 간에도 수많은 소통이 존재한다!
이러한 소통에는 서로 약속된 형식이 필요한데 그것이 API !

✅ RESTful API란?

  • REST
    Representaional State Transfer
    웹에 대한 소프트웨어 설계 방법론. 네트워크 통신에서 리소스를 정의하고 접근하는 방식을 나타내는 아키텍쳐 스타일.

  • RESTful API
    RESTful API는 REST 원칙을 따르는 API를 의미하며, 이를 통해 클라이언트와 서버 간의 통신이 이루어진다. 즉 어플리케이션간 소통하는 방법에 REST적인 표현을 더한 것!

    RESTful API는 주로 HTTP 프로토콜을 사용하며, 자원(Resource)을 URL로 표현하고, HTTP 메서드를 사용해 자원을 처리한다.
    RESTful API는 시스템 간 통신에서 효율적이며, 설계가 간결하고 유지보수가 쉬운 장점이 있다.

🔎 RESTful API의 주요 구성 요소

  • 리소스
    URL로 나타내는 데이터나 서비스의 엔티티.
    • 예: https://example.com/api/users/
  • HTTP 메서드
    RESTfil API로 작성하면 결과를 보지 안고 요청 형식만 보더라도 추론이 가능하다.
    GET: 리소스 조회 /articles/ -> article 목록 조회
    POST: 새로운 리소스 생성 /articles/ -> 새로운 article 생성
    PUT: 기존 리소스 수정
    DELETE: 리소스 삭제 articles/1/-> 1번 article 삭제
    PATCH: 리소스의 일부만 수정
리소스POSTGETPUTDELETE
/blog새 포스팅 작성모든 포스팅 목록포스팅 대량 업데이트모든 포스팅 삭제
/blog/1오류포스팅 1에 대한 내용포스팅 1의 정보 갱신포스팅 1 삭제
/blog/1/comments/포스팅 1의 새 댓글 작성포스팅 1에 대한 모든 댓글 목록포스팅 1의 댓글 대량 업데이트포스팅 1의 모든 댓글 삭제
  • Stateless
    서버는 클라이언트의 상태를 저장하지 않으며 요청은 독립적이어야 한다. 각 요청은 자체적으로 필요한 모든 정보를 포함해야 한다.

  • URI(Uniform Resource Identifier)
    리소스를 식별하는 데 사용되는 고유한 경로.

    • 예: /users/123/는 ID가 123인 사용자를 나타낸다.

      URI는 동사가 아닌 명사의 나열로 사용

    • POST /articles/create/(X)
      POST /articles/(O)

  • 핵심규칙

    • 자원: URI로 표현
    • 행위: HTTP Method로 표현
    • 표현: 자원과 행위를 통해 표현되는 결과물로 일반적으로 JSON형식을 사용

02.JSON

✅ JOSN(JavaScript Object Notation)

  • JS표기법을 따른 일조의 데이터를 담는 형식
  • 사람이 읽기 쉽고 프로그래밍으로 파싱(분석)하기 쉽다.
  • 파이썬의 dict처럼 key-value 형식의 구조이다.

    JSON은 데이터를 구조화하여 표현하는 경량 데이터 형식으로, RESTful API에서 주로 데이터를 교환하는 형식으로 사용된다. JSON은 사람과 기계 모두가 쉽게 읽고 쓸 수 있으며, 속성-값 쌍으로 데이터를 표현한다.

🔎 JSON의 구조

.json 형식으로 사용된다.
문자는 "으로 묶여야하며 true false 숫자등을 사용할 수 있다.

  • 객체: 중괄호 {}로 묶여 있으며, 키-값 쌍으로 구성된다.
{ "name": "John", "age": 30 }
  • 배열: 대괄호 []로 묶여 있으며, 여러 값을 담을 수 있다.
[ "apple", "banana", "cherry" ]
  • object안에 또 object 등이 담길 수 있다.
    예시
{
  "user1": {
    "name": "yun",
    "age": "10",
    "tags": ["python", "javascript", "django"]
  },
  "user2": {
    ...
  },
  ...
}

0개의 댓글