<REST API 란>
먼저 REST 란 리소스(자원)를 이름으로 구분하여 해당 리소스의 상태(정보)를 주고받는 모든 것을 의미합니다.
API란 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램 간 상호작용을 촉진하며, 서로 정보를 교환할 수 있도록 해주는 것입니다.
REST API는 하이퍼미디어 시스템을 사용해 클라이언트와 서버 간 상호작용을 지원합니다.
자원 기반의 구조 설계의 중심에 리소스가 있고 HTTP 메서드를 통해 리소스를 처리하도록 되어 있습니다.
웹 사이트의 이미지, 텍스트, 데이터 내용 등 모든 자원에 고유한 ID인 HTTP URI를 부여합니다.
다양한 언어와 프레임워크에서 이용할 수 있는 인터넷 표준입니다.
<REST API의 특징>
1. Stateless (무상태성) : 클라이언트와 서버 간의 상호작용은 독립적이며, 각 API 요청이 이전 요청과 분리되어 처리됩니다. 따라서 서버에 클라이언트의 상태정보를 저장할 필요가 없어지고, 서비스 확장성과 성능이 향상될 수 있습니다.
2. Client - Server : 클라이언트와 서버가 역할을 나눔으로써 각각의 부분의 독립적으로 발전합니다. 서버는 API로 데이터와 기능을 제공하고, 클라이언트는 사용자 인터페이스 기능을 담당합니다.
3. Cacheable : 클라이언트가 서버에서 제공하는 데이터를 *캐싱할 수 있습니다. 캐싱을 통해 사용자 응답속도를 개선하고, 서버 부하를 줄입니다.
*캐싱 : 캐시(데이터나 값을 미리 복사해 놓는 임시 장소)를 사용하는 곳. 즉, 캐시를 저장하고 있다가 요청 시에 제공하는 기술
4. Layered System (계층화) : 시스템은 여러 계층으로 구성될 수 있으며, 각 계층은 독립적으로 다룰 수 있습니다. 이를 통해 관리와 개발이 편해집니다.
5. *튜플릿 패턴 : 일정한 자원 경로와 HTTP 메서드 (GET, POST, PUT, DELETE 등)을 사용하여 심플하면서 직관적인 인터페이스를 제공합니다.
*튜플릿 패턴 : 공통된 로직의 골격을 정의하고 서브 클래스에서 부분적으로 재정의 가능한 패턴으로, 코드 중복을 줄이고 확장성을 높이는 디자인 패턴
<REST API와 HTTP Method>
1. GET : 서버 리소스의 조회를 요청할 때 사용됩니다. ex) 데이터를 검색하거나 쿼리 할 때
2. POST : 새로운 리소스를 생성하거나 추가할 때 사용됩니다. 클라이언트로부터 입력값을 전달받아 서버에 새로운 데이터를 생성합니다. 일반적으로 생성된 리소스의 ID나 결과에 대한 정보를 응답으로 반환합니다.
3. PUT : 존재하는 리소스의 값을 수정 및 업데이트할 때 사용됩니다. 대상 리소스에 대한 전체 정보를 전달하여 갱신을 진행하며, 없는 경우 새로 생성할 수 있습니다.
4. DELETE : 서버의 특정 리소스를 삭제할 때 사용됩니다. 요청이 성공적으로 실행되면 서버는 해당 리소스가 삭제되었음을 알리는 상태코드를 반환해야 합니다.
위 메서드들은 REST API에서 표준적으로 사용됩니다. 필요에 따라 특수한 경우데는 다른 메서드로 처리될 수 있습니다.
- CRUD : 데이터베이스 작업에 대한 일련의 기본 동작을 설명하는 용어로, 핵심 기능을 나타냅니다.
Create => POST
Read => GET
Update => PUT
Delete => DELETE
REST API와 CRUD는 서버가 HTTP 메서드로 사용자의 요청을 받아 데이터베이스에 CRUD 작업을 수행하는 과정에서 강한 상호작용이 발생합니다.
<REST API 설계 기본 규칙>
1. 대문자보다는 소문자를 선호합니다.
https://itsmineve.tistory.com/manage/Newpost (x)
https://itsmineve.tistory.com/manage/newpost (o)
2. 언더바 대신 하이픈을 사용합니다.
https://itsmineve.tistory.com/new_post (x)
https://itsmineve.tistory.com/new-post (o)
3. 마지막에 슬래시를 포함하지 않습니다.
https://itsmineve.tistory.com/newpost/ (x)
https://itsmineve.tistory.com/newpost (o)
4. 확장자는 URL에 포함하지 않습니다.
https://itsmineve.tistory.com/newpost/photo.jpg. (x)
GET https://itsmineve.tistory.com/newpost/photo (o)
5. 동사보다는 명사를 사용합니다. 하지만 컨트롤 자원을 의미하는 경우 예외적으로 동사를 사용합니다.
https://itsmineve.tistory.com/newpost/writing (x)
https://itsmineve.tistory.com/newpost/write (o)
Node.js와 비동기 (0) | 2023.06.20 |
---|---|
Node.Js 함수 (0) | 2023.03.15 |