API란?
클라이언트, 서버와 같은 서로 다른 프로그램에서 요청과 응답을 주고받을 수 있게 만든 체계
RESTful한 API를 사용하는 이유는?
REST API란?
어떤 URI에 어떤 메소드를 사용할지 CRUD를 하나의 주소로 관리하자!는 개발자들 사이에서 널리 지켜지는 약속
HTTP의 다양한 메소드
REST API에서는 주로 HTTP의 메소드인 GET/POST/DELETE/PUT/PATCH를 사용합니다.
📋REST API는 HTTP상 두 노드가 소통하는데 중요한 역할을 담당하고 있습니다.
= 정보를 주고받는 데 있어서 개발자들 사이에서 널리 쓰이는 일종의 📋형식입니다
= 형식이기 때문에 기술에 구애를 받지 않습니다. 즉 어떤 프로그래밍 언어든 어떤 프레임워크든 해당 폼에 맞춰서 기능을 만들면 되는 것입니다.
API란?
Application Programming interface의 약자로 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단을 의미합니다.
(=클라이언트, 서버와 같은 서로 다른 프로그램에서 요청과 응답을 주고받을 수 있게 만든 체계)
예를 들어 서버 개발자가 '서버 주소/A'는 로그인 기능, '서버 주소/B'는 회원 가입 기능으로 정의했다면, 클라이언트 개발자는 정확한 곳에 요청을 보낼 수 있습니다. 즉, API는 서버 개발자가 개발하고, 클라이언트 개발자는 그 API를 사용하는 것입니다.
📋RESTful 한 API를 사용하는 이유는?
위의 작업은 사람이 하는 일이기 때문에 몇몇 주소들은 기능이 겹칠 수 있고, CURD가 체계적으로 나뉘지 않을 수도 있습니다. 그 몇몇 API들이 문제는 일으키고 버그가 생기는 것입니다. 이에 개발자들은 좀 더 체계적으로 API를 관리하고 싶어 했고(즉, 효과적으로 유지보수하고 싶어 했고) 그런 API를 REST(Repesentational State Transfer)한 API 즉, RESTful API라고 부르게 되었습니다.
📋REST API란?
REST의 가장 큰 특성은 각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 자체로 추론 가능하다는 것입니다.
즉, RESTful 하게 만든 API는 요청을 보내는 주소만으로 어떤 요청인지 파악이 가능하고, 이러한 자원을 구조와 함께 나타내는 형태의 구분자를 URI라고 합니다.
쉽게 말하자면, 어떤 URI에 어떤 메소드를 사용할지 CRUD를 하나의 주소로 관리하자! 는 개발자들 사이에서 널리 지켜지는 약속이에요.
(위의 세 문단이 다 같은 의미예요😁)
HTTP의 다양한 메소드
서버에 REST API 요청을 보낼 때는 HTTP 규약에 따라 신호를 전송합니다.
HTTP에서는 다양한 메소드를 제공하고, REST API에서는 주로 HTTP의 메소드인 GET / POST / DELETE / PUT / PATCH를 사용합니다. ( * HTTP의 다양한 메소드는 기계들의 대화법 - REST API 영상을 참고해주세요 )
GET/POST 방식에 대한 자세한 설명은 다음 포스팅을 참고해주세요!
소포가 편지보다 많은 것을 담을 수 있듯, POST, PUT, PATCH에는 body라는 주머니가 있어서 정보들을 get이나 delete보다 안전하고, 다량으로 보낼 수 있습니다. 각 용도에 따라 구분할 필요는 없지만, (예를 들어 POST만으로도 CRUD가 가능하니까요!) RESTful한 API를 만들기 위해서는 이를 목적에 따라 잘 구분해서 사용해야 합니다.
다시 말해, 소프트웨어 간 HTTP로 정보를 주고받는 부분이 있고, 이 형식 준수한다면 어떤 언어로 만든 프로그래밍이든 RESTful한 서비스를 만들 수 있는 것을 의미합니다.
참고 자료
- 비전공자를 위한 이해할 수 있는 IT 지식 - 최원영저
- REST API가 뭔가요 - 유튜브 얄팍한 코디사전
- 기계들의 대화법 - 유튜브 생활코딩
'📓 Study > Tech Interview' 카테고리의 다른 글
📊 운영체제란? (0) | 2021.08.06 |
---|---|
CORS란? (0) | 2021.07.29 |
🍪쿠키와 🗃세션의 차이점 (0) | 2021.07.16 |
[Like 5] DB 피드백 정리 (0) | 2021.07.16 |
🍎🔖@어노테이션 (Annotation) (0) | 2021.07.09 |
댓글