-
REST API의 기초상승곡선을 그리는 개발자/독백 2024. 2. 2. 02:07
채널을 선택하고 음량을 조절할 수 있게 해주는 리모컨 같은 존재 , 자판기의 버튼 , 키보드나 마우스, 티비의 스크린 컴퓨터의 모니터 또한 .. -> Interface (기계와 인간의 소통창구)
소프트웨어의 영역으로 들어가서 사용자들이 프로그램이나 사이트, 웹을 원하는대로 제어하고 정보를 볼 수 있도록 버튼, 스크롤바, 슬라이더등 소프트웨어적인 장치를
UI (user interface, 소프트웨어와 인간간의 연결장치)
기상청을 예로 다양한 서버에서 실시간으로 날씨정보를 요청해서 받아가는데, 서버에 정보를 요청할 때는 지정된 형식이 있어야 한다
"date:191031 | place:seoul | which:temperature"
이런 식으로 날짜, 지역, 조회 내용 등등 형식으로 요청을 보내 ..
“17degree”
이렇게 답이 올거라는 공개된 형식이 있으면 누구든 참조하고 기상청을 활용한 소프트웨어를 만들 수 있을거라는 말씀
이처럼 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청이나 명령할 수 있는 수단을 API (application programming interface)라고 한다
그렇담 api중 rest api란 뭘까
rest api의 중요한 특성중 하나는 각 요청이 어떤 정보를 위한 것인지 요청의 모습 자체로 추론이 가능 🤔
But,
https://(사이트도메인)/1
학원의 반 리스트 요청
https://(사이트도메인)/hello
반의 학생들 리스트 요청
https://(사이트도메인)/rrtyrf
학생의 정보 수정 요청
이런식으로 요청하면 서비스의 기능 자체는 문제가 없지만 이 서비스를 나 혼자 만드는게 아니라면? 나중에 이 인계를 받을 개발자나 이 API를 이용할 개발자들은 무척 힘들어질 것임 .. rrtyrf이 뭔데? 무슨 정보인데? 이렇게 생각을 하겠죠 따라서 Restful하게 만든 API는 요청을 보내는 주소만으로도 대략 이게 뭘하는 요청인가? 파악이 가능하다!
학원DB에게 정보를 보내달라는 요청을 할 때,
https://(도메인)/classes/2/students/15
https://(도메인)/학원의 반들 목록/반의정보/해당번호의 학생정보
혹은
https://(도메인)/classes/2/students?sex=male
?해당 반의 남학생들의 정보
https://(도메인)/classes/2/students?page=2&count=10
?한페이지에 10명씩 담기 (Git 동차)
자원을 구조와 함께 나타내는 구분자를 url 이라고 함
그러나 이런 조회작업뿐 아니라 .. 정보를 새로 넣거나 수정, 삭제하는 작업도 필요한데 통틀어 CRUD 라고 부른다
create 생성
read 조회
update 수정
delete 삭제
서버에 rest api로 요청을 보낼 때는
HyperText Transfer Protocol 즉 http라는 규약에 따라 신호를 전송하는데, 우체국에서 물건을 부칠 때 등기, 일반, 택배등 다양한 방법이 있는 것처럼 http로 요청을 보낼때도 여러가지 메소드가 있다.
대표적으로
get, post, delete, put, patch 가 있다
소포가 편지보다 더 많은 걸 담을 수 있듯이 post, put,patch는 body라는 주머니가 있어 get, delete보다 더 많은 정보를 비교적 안전하게 감춰서 실어보낼 수 있다
RESTful하게 정보를 보내기 위해 각 목적에 맞게 사용해야 하는데
get은 데이터를 read할 때 사용함.
https://(도메인)/classes/2/students 이런 식으로 get요청을 보내면, 개발자들은 아, 이 반의 학생들을 보는 요청이구나! 짐작 가눙
post는 create할 때 사용!
만약 새 학생이 와서 정보를 추가해야 한다면
https://(도메인)/classes/2/students 이런 식으로 post 요청을 작성하면, body에 새 학생의 정보를 실어서 보낸다. 학생의 인덱스는 보통 정보가 추가 되면서 생성되기 때문에
https://(도메인)/classes/2/students/15
굳이 15라는 정보가 필요 없음!
다만 학생이 개명을 해서 정보를 수정해야 하는 경우,
https://(도메인)/classes/2/students/15
url에 변경할 학생의 idx까지 명시해 put 또는 patch로 보낸다! update될 학생의 정보도 body로 실어 보냄!
이름 : 감자 -> 고구마
성별 : 남자 -> 남자
출석 수 : 2 -> 1
통상적으로 이렇게 통째로 정보를 변경해야 하는 경우에는 put을,
이름 : 감자
성별 : 남자
출석 수 : 2 -> 1
patch는 정보 중 일부를 특정 방식으로 변경할 때 사용.
delete 같은 경우,
학원에서 그만두게 되면 그 학생의 정보를 삭제해야 하는데 당연히 그 학생의 idx까지 표시되어야 함!
post나 put이나, 용량이 적고 중요도가 낮은 정보들은 get 하나로 다 가능하지만, 구분 가능한 요청을 만들어내려면
POST 요청시,
https://(도메인)/classes/2/students/create
https://(도메인)/classes/2/students/read
https://(도메인)/classes/2/students/3/update
https://(Eu|)/classes/2/students/3/delete
이렇게 URI에 동작까지 명시해야 함.
이 것을 지양하기 위해 rest api는 동사가 아닌 명사로 이루어져야 하는데,
결국 RestAPI란, 어떤 url에 어떤 메소드를 사용할지,
개발자들 사이의 약속.. 같은 것임!
형식이기 때문에 기술에 구애받지 않아 앱이든 웹이든 어떤 언어로 쓰던, 소프트웨어간 http로 정보를 주고받아야 한다면 이 규칙을 준수해 RESTful한 서비스를 만들 수 있다!'상승곡선을 그리는 개발자 > 독백' 카테고리의 다른 글
Hello, World! (5) 2023.07.17