Restful API

Park Jae Hong·2023년 9월 10일
0

API 란 ?

: Application Programming Interface 두 애플리케이션이 서로 통신하는 방법을 정의

Rest + Ful

: Rest 아키텟처 스타일로 요청과 응답을 하는 API

Rest 아키텍쳐 탄생 ?

  • Http 프로토토콜 ?
    : 클라이언트와 서버 간의 데이터를 주고받기 위해 사용되는 표준 (클라이언트 요청 -> 서버 응답)

  • 로이 필딩은 HTTP의 주요 저자 (웹 표준화에 상당히 기여)

  • HTTP 프로토콜이 표준화가 되어있긴하지만 클라이언트의 종류(웹, 모바일 등) 에 따라, 또한 개발자의 해석에 따라 다르게 구현될수 있다. 구현 방식이 각기 다르게 서버에 요청하게 되면 서버가 매우 복잡하게 됨

  • 이를 개선하기 위해 로이 필딩은 Rest 아키텍처를 개발하게 됨

Rest 란 ?

Rest 를 알기 전 각 통신 방식을 간략하게 보면..


@Get(android/group) android 그룹 정보 조회

@Get(android/group/1) android 1번째 그룹 정보 조회

@DELETE(android/group/1)android 1번째 그룹 정보  삭제

Rest API 가장 큰 특징 : 요청 메시지만 보고도 무엇을 원하는지 파악 가능 !

REpresentational(표현) State(상태) Transfer(전달)

: 자원을 이름(표현)으로 구분하여 자원의 상태(정보)를 전달한다.

자원: URI (android/group)

@GET(/android/group/1/show)
@GET(/android/group/1/delete)
이렇게 사용은 가능하지만 RestApi 규칙에 어긋남.

@GET(/android/group/1)
@DELETE(/android/group/1)
URI 는 명사로 표현되어야 하고 자원에 대한 조작은 HTTP Method로 해야한다.

URI 규칙

  • 슬래시 구분자를 통해 자원 간의 계층 관계를 나탬

  • 언더바(_) 대신 하이폰(-)을 사용해야한다. ( 컴퓨터 폰트에 따라 언더바를 지원하지 않는 경우가 있어 혼란을 줄수 있다.)

  • 대문자 대신 소문자 (대문자를 사용하면 일관성이 떨어진다.)

  • URI의 마지막은 슬래시는 포함하지 않는다.(아무런 의미가 없기떄문에 혼란만 야기한다.)

행위 or 상태

: HTTP Method (GET/POST/PUT/DELETE)

  • GET : 조회

  • DELETE: 삭제

  • PUT: 업데이트 (빈 정보는 null)

  • PATCH: 업데이트 (빈 정보는 기존 데이터 유지)

  • POST: 생성

표현

: 요청 Header(text/html, image/gif, text/*)

  • 클라이언트는 원하는 자원과 그 표현으로 요청 -> 서버는 자원의 표현으로 응답 요청
    ex) text/json 으로 요청하면 json 형태로 응답 !

설계 원칙

  • Uniform Interface

  • Stateless(무상태성)

  • Cacheable(캐시 가능)

  • Client Server

  • Layered System(계층형 구조)

개발자들은 Uniform Interface를 지키기 위해 노력하면 된다. 나머지는 인터넷 제약사항에서 자동적으로 지켜진다.

로이 필딩

" 시스템 전체를 통제할 수 있다고 생각하거나, 진화에 관심이 없다면 REST에 대해 따지느라 시간 낭비하지 마라"

  • 시스템 통제가 가능 : 서버와 클라이언트, 시스템 전체를 내가 개발할 때,

  • 진화에 관심이 없다: 오랜시간에 걸쳐 진화하는 시스템에 관심이 없음

참고: https://meetup.nhncloud.com/posts/92

profile
The people who are crazy enough to think they can change the world are the ones who do. -Steve Jobs-

0개의 댓글