api(애플리케이션 프로그래밍 인터페이스)는 쉽게말해 은행에 "은행창구"와 같은것이다. 은행을 찾은 고객이 은행창구에 어떤 서류를 요청하면(호출)하면 고객서류 저장소에서 이에 해당하는 서류를 넘겨주는(응답) 방식이다.
자세히 말하자면,
다양한 웹사이트들,앱들이 날씨정보 요청 <->API<->기상청서버에서 요청받은 정보로(최고 기온/최저 기온 등) 구성된 응답으로 답한다.
그러면 이 기상청 서버로 정보들을 요청하는 지정된 규칙,형식이 있어야한다. 예를 들면 (211107|seoul|weather) 이렇게 표시해서 이 주소로 정보를 요청하면 ( 10°C ) 이렇게 답이 올거라는 공개된 메뉴얼이 있으면 누구든 이걸 참조해서 기상청 정보를 활용하는 소프트웨어를 만들수 있다.
이처럼 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청,명령을 받을수있는 수단을 API라고 한다.
REST API는 정보들이 주고받아지는데 있어서 개발자들 사이에서 널리 쓰이는 일종의 형식이다. 예를 들면 우체국에 가면 송장들이 마련돼있고 사용자들은 형식에 맞게 채워넣는것처럼 ( 보내는 사람의 주소,전화번호 받는사람의 주소,전화번호 등) 어떤 기술이나 제품이 아니라 형식이기 때문에 내가 어떤 프로그래밍 언어를 쓰든 무슨 프레임 워크를 쓰든 뭐에다 소프트웨어를 만들든 이 형식에 맞춰서 만들어내면 되는것이다. 그렇기 때문에 RESTful 하게 만든 API는 요청을 보내는 주소만으로도 대략이게 뭘하는 요청인지 파악가능하다.
클라이언트가 서버의 정보에 조회작업뿐만 아니라 정보를 새로 넣거나 수정하거나 삭제하는 작업도 필요하다. 이를 통틀어서 C.R.U.D라고 부른다.
CREATE 생성
READ 조회
UPDATE 수정
DELETE 삭제
서버에 REST API로 요청을 보낼때는 HTTP라는 규약에 따라 신호를 전송한다. 택배로 짐을 부칠때도 등기,일반,특송이라는 여러방법이 있듯이 이 HTTP로 요청을 보낼때도 여러 메소드가 있다.(다른종류)
REST API 에서는 GET/POST/PUT/DELETE 4가지(또는 5가지)메소드를 사용한다. 소포가 편지보다 더 많은걸 담을 수있듯이 POST/PUT/PATCH에는 BODY가 있는데 정보를 get이나 delete보다 많이, 비교적 안전하게 감춰서 실어보낼수있다.누구든 각 요청의 의도를 쉽게 파악할수 있도록 method의 목적에 따라 구분해서 사용해야된다.
즉, REST API는 HTTP 요청을 보낼 때 어떤 URI에 어떤 method를 사용할지 개발자들 사이에 널리 지켜지는 약속이다.형식이기 때문에 기술에 구애받지 않는다. 앱을 만들든 웹사이트를 만들든 그것들을 어떤 언어로 뭘 써서 만들든거기에 소프트 웨어간 HTTP로 정보를 주고받는 부분이 있다면 형식,규칙들을 준수해서 RESTful한 서비스를 만들수있다.
Reference) youtube
'얄팍한 코딩사전'| https://youtu.be/iOueE9AXDQQ
'그런 REST API로 괜찮은가' | https://youtu.be/RP_f5dMoHFc