
유튜버 얄팍한 코딩사전 님 영상보고 내용정리 한것. https://www.youtube.com/watch?v=iOueE9AXDQQ
개인 공부용. 으로쓴거라... 오타 많고 이해하기 힘들게 아무렇게나 썼어도 이해해주시길 바랍니다. 너그럽게.. REST API 답지 않게 내 맘대로 썼어요.~
정보들이 주고 받아지는데 있어서 개발자들 사이에 널리 쓰이는 일종의 형식
우체국 송장이 있으면 형식을 이용자들이 채워넣어야 되는 뭐 그런 상황인 거지..
어떤 기술이나 제품이 아니라 형식이기 떄문에..
어떤 프로그램을 만들든 이 형식에 맞춰서 만들기만 하면 된다.
사용자가 사용하는 버튼 , 스크롤바 ,슬라이더 , 브라우저
UI 소프트웨어와 인간의 소통을 위한 User Interface
기상청 서버 를 예로 들면 기상청 서버에 날짜 , 지역 , 조회할 내용 등을 전송하는 틀이 있어야 한다.받을 때도 이렇게 받는다 라는 틀이 있어야 하구..
이처럼 소프트웨어가 지정된 형식으로 요청 , 명령을 받을수 있는 수단을 api라고 한다.
프론트엔드 앱에서 서버에 데이터 요청하거나, 배달앱에서 서버에 주문을 넣거나 등..
이런 서비스 들에서 오늘날 널리 사용되는 것들이 REST 형식의 API 이다.
과거에 SOAP이란 복잡한 형식을 대체한것.
REST의 가장 중요한 특성은 각요청이 어떤 정보를 위한
각요청이 어떤 동작이나 정보를 위한 것인지를 그요청의 모습 자체로 추론이 가능하다.
각 요청에서 기능 자체만을 중요하게 생각한다면 모양 상관없이 기능만 동작하게 만들면 됨.
근데 맘대로 이름 막붙여도 되는데,,, 개발자 혼자 만드는게 아니라서 딱 봐도 식별이 가능하게 만들어야 됨..
EX)
학원의 반리스트 요청
https://도메인/1
반의학생들리스트요청
https://(사이트도메인)/hello
학생의 정보 수정 요청
https://(사이트도메인)/hyot-hong
1 hello hyot-hong?? 이런식으로 링크 보내면.. 이거 머지 하면서 같이개발하는 사람이 아주 난감하단 말이다.. 기능 문제 없어도 협업 잘 안되겠찌?? 헷갈리겠찌ㅣ???
같은 프로젝트 조에 미친 아이가 하나 나오면 아주 골치아파진다..
그런데!
http://(도메인)/classes/ 이렇게 쓰면
학원 반애들 정보를 받아오겠거니 하겠지??
http://(도메인)/classes/2 이렇게 쓰면 2반학생들의 정보가 온다고 합리적인 생각을 할수가 있겠찌??
https://(도메인)/classes/2/students?sex=male
이렇게 쓰면 2반 남성 학생들 정보인지 얼추 알겠찌??
https://(도메인)/classes/2/students?page=2&count=10
이렇게 쓰면 2반 학생들 2페이지인데 10명이 나온다고 생각할수 있꼤찌ㅣ???(점점 힘들다...)
이렇게 자원을 구조와 함께 나타내는걸 URI라고 함.
서버에 RESTAPI를 보낼땐 HTTP 라는 규약을 통해서 신호보냄
HyperText Transfer Protocol
(접근할수있는 텍스트) 전송 규약
을 통해서 전송을 하는디..
REST API에서는 GET POST DELETE PUT PATCH 이 5가지를 사용해서 보낸다고 한다...
POST PUT PATCH 에는 정보를 비교적 안전하게 감춰서 보낼수 있다고 한다...
GET DELETE보다..
POST 하나로도 읽고 쓰고 지우고 수정하고 다 가능 하다고 한다..
그런데 POST를 다른 사람이 소스를 보고 의도를 명확히파악할수 있는
RESTful 하게 Representational State Transfer 전송 상태를 명확히 보여주기 하기 위해선
이들의 목적에 따라 구분해 줄 필요가 있!는데~~~
GET을 조회하는데 사용하고
Get으로 보내는 소스에 https://(도메인)/classes/2/students uri 까지 있다면,,,
이건 2반 학생들의 정보를 조회하는 거구나... 대번에 알수있는거임.
Post는 새로운 정보를 추가하는데 사용됨.
Post http://(도메인)/classes/2/students
이면은 2반 학생들의 정보를 실어 보내는 거구나 짐작할수 있음.
Put 또는 Patch를 사용해서
https://(도메인)/classes/2/students/14 이렇게 보내면은..
2반 학생중에 14번 아이디 가진아이의 정보를 수정하는 거구나 라고 짐작할수 있는거임..
put patch 똑같은 용도로 쓰기도 하는데
정확히 따지면
put은 정보를 통째로 갈아 끼울때
patch는 일부정보만 갈아끼울때 쓰는 차이가 있지요..
Delete 는 알다시피 정보 지우는 거임..
https://(도메인)/classes/2/students/3
3번 학생정보 지우는 거구나.. 라고 생각할수 있음..
어떤 메소드에 어떤 형식을 사용할지 개발자 들 사이에서 약속한거임.
어떤 언어 쓰든 어떤 기술 쓰든간에 위에 설명한 형식들은 어디에나 개발자들의 사회 통념상 전부 적용가능한 개념이겠지요 호호호...
이건 아주 기초적인 것들이구..
인터넷에
restful api design guidelines 라고 쓰면은
자세하게 규약이 어떤건지 잘나오니까 검색해 보라네요.호호
GraphQL이라고 RESTAPI 대안으로 나오는 거도 있는데... 이건 나중에 얄코님 강의 한번듣고
리뷰더 할거임..
얄팍한 코딩님 감사감사감사x1000