REST API는 기존의 HTTP URL을 단순히 사용하는 방식보다 더 체계적이고 효율적인 웹 서비스 설계를 가능하게 합니다.
| 구분 | 기존 HTTP URL 방식 | REST API 방식 |
|---|---|---|
| 자원 표현 | URL에 동사(예: /getUser, /updateUser) 포함 | URL에 명사(예: /users/1)만 사용, 행위는 HTTP 메서드로 구분 |
| 행위 구분 | URL 이름으로 구분 (동사 사용) | HTTP Method(GET, POST, PUT, DELETE 등)로 구분 |
| 확장성/유지보수 | 구조가 일관되지 않아 관리 어려움 | 일관된 규칙으로 설계, 유지보수와 확장 용이 |
| 플랫폼 독립성 | 주로 웹 브라우저에서 사용 | 다양한 플랫폼(웹, 모바일, IoT 등)에서 사용 가능 |
| 표준화 | 각 서비스마다 다름 | HTTP 표준 준수, 범용성 높음 |
기존 방식:
/getUser?id=1 (조회)/updateUser?id=1 (수정)RESTful 방식:
GET /users/1 (조회)PUT /users/1 (수정)명확하고 직관적인 인터페이스
REST API는 자원(Resource)을 URI(예: /users/1)로 명확하게 표현하고, 각 자원에 대한 행위(생성, 조회, 수정, 삭제)는 HTTP 메서드(GET, POST, PUT, DELETE 등)로 구분합니다. 이로 인해 API의 의도가 명확하게 드러나고, 개발자가 쉽게 이해하고 사용할 수 있습니다.
플랫폼 및 언어 독립성
REST API는 HTTP라는 웹 표준을 기반으로 하므로, 어떤 운영체제나 프로그래밍 언어에서도 사용할 수 있습니다. 서버와 클라이언트가 서로 독립적으로 개발 및 확장될 수 있어 다양한 환경에서 통합이 쉽습니다.
확장성과 유연성
REST API는 무상태(stateless) 구조를 채택하여 각 요청이 독립적으로 처리됩니다. 서버는 클라이언트의 이전 요청 정보를 저장하지 않아 확장성과 유지보수가 용이합니다. 또한, 자원 중심의 설계로 인해 새로운 기능 추가나 구조 변경이 쉽습니다.
기존 HTTP 인프라 활용
REST API는 HTTP 프로토콜의 인프라(캐싱, 인증, 보안 등)를 그대로 활용할 수 있어 별도의 시스템을 구축할 필요가 없습니다. 이로 인해 개발 및 운영 비용이 절감됩니다.
다양한 클라이언트 지원
웹 브라우저뿐만 아니라 모바일 앱, 데스크톱 앱 등 다양한 클라이언트에서 쉽게 사용할 수 있도록 설계되었습니다. 데이터만 주고받으면 되기 때문에 멀티 플랫폼 환경에 적합합니다.
[1] https://velog.io/@gimminjae/REST-API%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-%EC%99%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%EA%B0%80
[2] https://hahahoho5915.tistory.com/54
[3] https://velog.io/@yoojkim/Rest-API-RESTful%ED%95%98%EA%B2%8C-URL-%EC%84%A4%EA%B3%84%ED%95%98%EA%B8%B0
[4] https://adeveloperstory.tistory.com/entry/RESTful-API%EC%9D%98-%EC%A0%95%EC%9D%98%EC%99%80-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0%EC%99%80-%EC%A0%81%EC%9A%A9-%EB%B0%A9%EB%B2%95
[5] https://shyvana.tistory.com/7
[6] https://aws.amazon.com/ko/what-is/restful-api/
[7] https://velog.io/@balparang/REST-API%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EA%B3%A0-%EC%99%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EA%B1%B8%EA%B9%8C
[8] https://blog.naver.com/codingbarbie/223233477242
[9] https://seungyong20.tistory.com/entry/REST-API-%ED%99%95%EC%8B%A4%ED%9E%88-%EA%B0%9C%EB%85%90-%EC%9E%A1%EA%B8%B0
[10] https://dev-coco.tistory.com/97