CS지식

Restful API

코딩하는둥이 2023. 6. 27. 01:02

API (Application Programming Interface)

 : 운영 프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어에서 제공하는 기능을 제어할 수 있게 해주는 인터페이스

 즉, 애플리케이션에서 데이터를 읽거나 쓰기 위해 사용하는 인터페이스

 

웹 API 예시

1. 화면에서 서버로 데이터를 요청 2. 서버는 요청에 대한 작업을 수행 3. 서버는 필요할 경우 데이터 저장소와 통신하여 데이터를 가져온 후 가공 4. 프론트엔드의 요청에 대한 응답에 가공한 데이터를 포함하여 전송

 

Rest(REpresentataional State Transfer)

 : 문서, 그림, 데이터 등의 자원을 이름으로 구분해서 해당 자원에 대한 상태, 정보를 주고 받는 것 

 

Rest API

: URI (Uniform Resource Identifer : 인터넷 식별자) + HTTP  =>  JSON형식( 브라우저 간 호한성 좋음) 

: HTTP Method를 활용하여 해당 자원에 대한 crud를 적용

 

HTTP Method

 : 클라이언트와 서버 사이에 이루어지는 요청과 응답 데이터를 전송하는 방식

 

CRUD

Create: 생성 (POST)

Read: 읽기 (GET)

Update:갱신 (PUT OR PATCH)

Delete:  삭제 (DELETE)

 

종류

get: 리소스 조회

post: 요청 데이터 처리, 주로 등록에 사용

put: 리소를 전체 수정,  해당 리소스가 없으면 생성

delete: 리소스 삭제

patch: 리소스 일부 수정

 

 

Restful  API

: REST의 원리를 따르는 시스템을 의미

 

 

RESTful API를 위한 6가지 원칙

 

 

1) Client-Server

 : 클라이언트와 서버 애플리케이션은 서로 간에 완전히 독립적이어야 합니다. 

2) Cacheable

: 클라이언트는 서버로부터 받은 응답을 캐시에 저장하여, 이후에 동일한 요청이 있을 때 서버에 다시 요청하지 않고 캐시된 응답을 사용할 수 있습니다.

3) Stateless

: 서버가 클라이언트의 상태를 유지하지 않는 것을 의미합니다. 각 클라이언트의 요청은 서버에 의해 독립적으로 처리되며, 서버는 이전 요청 또는 상태 정보를 저장하지 않습니다.

4) Uniform Interface

 :  REST에서 말하는 균일한 인터페이스를 얻으려면, 구성 요소의 동작을 안내하는 4가지의 제약을 따려야 한다.

1.  리소스 식별 :  각 리소스는 고유한 식별자(URI)를 가지며, 이를 통해 리소스를 식별할 수 있어야 한다

2. 표현을 통한 자원조작 : 특정 리소스를 나타내는 URI을 바꾸지 않고도, 표현을 활용해서 리소스를 조작할 수 있어야 한다

3. 자기 서술적인 메세지 : 메시지는 자체적으로 명확하고 완전한 정보를 제공해야 합니다.

4. HATEOAS     : 서버는 리소스와 관련된 하이퍼미디어 링크를 클라이언트에게 제공해야 합니다.       

5) Layered System

: 시스템을 여러 개의 계층으로 구성하는 방식을 말합니다.

6) Code-On-Demand

: 서버에서 클라이언트로 실행 가능한 코드를 동적으로 전송하여 클라이언트 측에서 실행되도록 하는 것을 의미합니다.

 

 

 

URI 네이밍 규칙

 

1) 명사를 사용한다

     : /members : 멤버의 정보

2) 자원 간 계층 관계를 표현하기 위해 / 사용

      : /members/age

3) 하이픈(-) 기호를 사용하여 URI의 가독성을 높인다.

      :/my-page

4) 가급적 밑줄 사용하지 않는다.

      : 일부 브라우저나 화면에서 글꼴에 따라 _ 문자가 가려지거나 숨겨질 수 있다. 

5) URI에 파일 확장자를 표시하지 않는다.

6) URI에 CRUD함수의 이름을 사용하지 않는다.

7) 자원의 필터링을 위해 새로운 API를 만들지 않는다.

8) 필터링을 위해 새로운 API를 만들지 않고 Query string사용

     : 주소?속성=값&속성=값&...

9)  B반 학생들 이름, 오름차순으로 보는법

     : /students?type=b&sort=name,asc

 

 

 

 

 

 

출처

flaticon 사진사용

https://www.flaticon.com/