Interface(인터페이스) : 기기(시스템)와 인간(시스템)이 만나는 접점에서 소통창구의 역할을 해주는 것.
(ex, 자동차 조작부, 자판기 버튼, 컴퓨터의 입ㆍ출력장치, TV의 스크린 등)
UI : User Interface의 약자이다. 소프트웨어(시스템)와 인간(시스템)의 소통을 위한 소통창구와 같은 역할.
API : Application Pograming Interface 의 약자이다. 기기(시스템)와 인간(시스템)사이에 소통창구인 Interface가 필요한 것 처럼 소프트웨어(시스템)와 소프트웨어(시스템)사이에도 요청, 명령을 받는 수단을 규격화 한 것.(소통을 원활히 하도록 하는 것.)
REST API : REST 라는 형식의 API이다. 프론트엔드 웹에서 서버에 데이터를 요청하거나, 배달 앱에서 서버에 주문을 넣거나 하는 등에 사용되는데,
핵심은! => 각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 자체로 추론이 가능하다는 것. (과거의 SOAP이라는 복잡한 형식을 대체한 것.)
https://(도메인)/classes
반에 대한 정보가 나올 것이라고 추론 가능{ "results" : [ {"idx": 1, "name": "예비반"}, {"idx": 2, "name": "초급반"}, {"idx": 3, "name": "중급반"}, {"idx": 4, "name": "고급반"} ] }
https://(도메인)/classes/2
2반에 대한 정보가 나올 것이라고 추론 가능{ "results" : [ {"idx": 2, "name": "초급반"}, ] }
https://(도메인)/classes/2/students
2반의 학생정보 데이터가 나올 것이라고 추론 가능{ "results" : [ {"idx": 1, "name": "홍길동", "sex": "male"}, {"idx": 2, "name": "계월향", "sex": "female"}, {"idx": 3, "name": "전우치", "sex": "male"}, {"idx": 4, "name": "성춘향", "sex": "female"} ] }
https://(도메인)/classes/2/students/15
2반의 15번 학생정보 데이터가 나올 것이라고 추론 가능{ "results" : [ {"idx": 15, "name": "연흥부", "sex": "male"} ] }
https://(도메인)/classes/2/students?sex=male
2반의 남학생정보 데이터가 나올 것이라고 추론 가능{ "results" : [ {"idx": 1, "name": "홍길동", "sex": "male"}, {"idx": 3, "name": "전우치", "sex": "male"} ] }
https://(도메인)/classes/2/students?page=2&count=10
2반의 학생정보 데이터가 한 페이지 당 10개 씩 나올 것이라고 추론 가능{ "results" : [ {"idx": 11, "name": "최번개", "sex": "male"}, {"idx": 12, "name": "송하나", "sex": "female"}, {"idx": 13, "name": "미라한", "sex": "female"}, {"idx": 14, "name": "연놀부", "sex": "male"}, ㆍㆍㆍ ] }
GET : 데이터를 Read, 조회하는데 사용함.
POST : Create, 새로운 정보를 추가하는데 사용함. 새로운 정보가 추가될 땐 index가 추가되면서 생성되기 때문에 post요청에서는 이 ID값(index번호)을 명기할 필요가 없음. (https://(도메인)/classes/2/students)
만약, 이 index를 가진 학생의 정보가 변경되었을 땐, uri에 변경할 학생의 index까지 명기한 다음, PUT 또는 PATCH를 사용해서 변경, UPDATE 될 새 정보들을 BODY에 실어보냄
PUT : 정보를 통째로 갈아끼울 때 사용함.
PATCH : 정보 중 일부를 특정 방식으로 바꿀 때 사용함.
DELETE : 데이터를 삭제할 때 사용함.
(HTTP로 요청을 보낼 때의 메서드들 :
GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH)
REST API는 HTTP요청을 보낼 때, 어떤 URI에 어떤 메서드를 사용할지 개발자들 사이에 널리 지켜지는 약속이다. 이는 형식이니 만큼 기술적인 제약을 받지 않는다.
항상 좋은 글 감사합니다.