
부트캠프에서 웹 개발을 할 때 REST API에 대해 학습했던 경험이 있다. 개념이 모호해서 이해가 잘 되지 않았다. 직접 사용해보며 개념을 다시 학습하니 이해가 잘 되었다.
REST란 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 것을 의미한다.
REST API(Representational State Transfer API)는 REST를 기반으로 만들어진 API이고 웹 기반의 애플리케이션 간 통신을 지원하는 아키텍처 스타일이다. 일반적으로 HTTP를 기반으로 동작하며 자원에 대한 작업을 수행하기 위해 HTTP 메서드를 사용한다.
REST에서 자원이란 데이터이다. 자원은 URL로 식별한다.
REST API는 CRUD 작업을 HTTP 메서드로 수행한다.
POST, GET, PUT, PATCH, DELETE
자원의 상태는 클라이언트와 서버 간 JSON, XML, HTML 등의 형태로 표현
무상태성은 확장성과 성능을 높이는 데 기여한다.
서버 간의 모든 요청이 독립적이어야 하며, 서버는 클라이언트의 상태를 저장하지 않는다.
장점
표준화: HTTP 프로토콜 기반으로 설계되어 표준화된 방식으로 동작
유연성: JSON, XML 등 다양한 데이터 포맷 지원
확장성: 클라이언트와 서버가 독립적으로 동작
쉬운 학습: HTTP와 URL 구조에 익숙한 개발자에게 친숙함
단점
과도한 요청: 여러 요청이 필요할 수 있음 (ex: 중첩된 자원 조회)
무상태성의 한계: 상태 정보를 저장해야 하는 경우 부가 작업 필요
대규모 데이터 처리 시 비효율적: 대량의 데이터 송수신이 필요한 경우 성능 이슈 발생 가능
REST API를 설계할 때 몇 가지 규칙이 있다. REST API와 이에 대해 잘 정리해 놓은 글이 있다.
https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API%EB%9E%80-REST-RESTful%EC%9D%B4%EB%9E%80
느낀점
직관적인 URL로 협업하기에 용이하고 HTTP를 기반으로 하기 때문에 앱, 웹 개발업무를 수행하는 데 있어서 알아두면 좋을 것 같다고 생각했다. 또한 POSTMAN이나 SWAGGER같은 툴을 사용하여 테스트를 수행할 수 있다. 하지만 이러한 것들을 누리기 위해서는 REST API의 설계 규칙을 준수하여 설계하여 RESTful하게 설계해야 한다.