🌱 개발자들이 '일반적으로' 알고 쓰는 수준의 REST API를 알아볼 것!
- 학술적으로 정확한 의미의 REST API를 알고자 한다면 ' 그런 REST API로 괜찮은가?' 키워드 검색
🌱 REST API 란?
- 정보들이 주고받아지는데 있어서 개발자들 사이에 널리 쓰이는 일종의 형식
- 형식이기 때문에 어떤 프로그래밍 언어, 무슨 프레임워크, 어느 소프트웨어를 만들든 이 폼에 맞춰서 기능을 만들면 되는 것
🌱 UI (User Interface) 란?
- 소프트웨어와 인간의 소통을 위한 소통 창구 (기계와 인간 간의 소통창구)
예) TV의 리모콘, 자판기의 버튼, 컴퓨터의 키보드와 마우스 - 사용자가 명령을 넣는 것 뿐 아니라 그 결과와 정보들을 받아오기 위한 장치
예) TV의 스크린, 컴퓨터의 모니터 - 컴퓨터와 스마트폰의 프로그램와 사이트, 앱을 원하는대로 제어하고 정보를 볼 수 있도록 하는 소프트웨어적인 장치
예) 버튼, 스크롤바, 슬라이더, 브라우저 창 등
🌱 API (Application Programming Interface) 란?
- 기계와 기계, 소프트웨어와 소프트웨어 사이에서의 수많은 요청과 정보 교환을 위해 소통할 수 있는 소통 창구
- 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단
- 예) 미리 작성된 소프트웨어를 통해 기상청 서버로부터 다양한 웹사이트들, 앱들이 지정된 형식을 통해 실시간 날씨 정보 요청
- 예) Windows API : 지정된 명령어로 윈도우에서 동작을 수행하도록 소프트웨어를 짤 수 있는 API 제공
🌱 REST API 란?
- 서버에 데이터 요청 등의 서비스에서 널리 사용
- 과거의 SOAP 형식을 대체
- 각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 자체로 추론 가능
- 즉, 요청을 보낸 주소만으로도 대략 어떤 요청인지 파악 가능
- 조회 작업
- 조회 작업 뿐만 아니라, 정보를 새로 넣거나 수정, 삭제하는 작업 : CRUD (CREATE, READ, UPDATE, DELETE)
// 조회 작업
https://(도메인)/classes → 학원의 반들 목록을 받아오는 요청
https://(도메인)/classes/2 → 반들 목록 중 인덱스 2인 반의 정보를 요청
https://(도메인)/classes/2/students → 반들 목록 중 인덱스 2인 반에 해당하는 학생들의 정보 요청
https://(도메인)/classes/2/students/15 → 학생들 중 인덱스 15인 가진 학생의 정보 요청
https://(도메인)/classes/2/students?sex=male → 학생들 중 남학생들의 정보만 요청
https://(도메인)/classes/2/students?page=2&count=10 → 한 페이지에 10명씩 요청
- 서버에 REST API로 요청을 보낼 때는 HTTP 규약에 따라 신호를 전송
- REST API에서 HTTP로 요청을 보낼 때의 여러 메소드 : GET, POST, DELETE, PUT, PATCH
- POST, PUT, PATCH는 BODY라는 주머니를 통해 GET, DELETE보다 많은 정보를 안전하게 전송
- 누구든 각 요청의 의도를 쉽게 파악하기 위해서 RESTful하게 API를 만들기 위해서는 목적에 따라 구분해서 사용
- GET : 데이터를 READ, 조회하는데 사용
- POST : 데이터를 CREATE, 새로운 정보를 추가하는데 사용
- PUT, PATCH : 데이터를 UPDATE, 변경하는데 사용, PUT은 정보를 통째로 수정, PATCH는 정보 중 일부를 변경
- DELETE : 데이터를 삭제
- URL는 동사가 아닌 명사로 이루어져야 한다는 규칙
🌱 결국, REST API 란?
- HTTP 요청을 보낼 때, 어떤 URL에 어떤 메소드를 사용할지 개발자들 사이에 널리 지켜지는 약속 (형식)
참조 사이트
'Java-Spring > 스프링 부트와 AWS로 혼자 구현하는 웹 서비스' 카테고리의 다른 글
[Spring Boot] 01장. 인텔리제이로 스프링 부트 시작하기 (0) | 2021.10.02 |
---|---|
[Spring Boot] 00장. MVC의 역할과 실행 흐름 (0) | 2021.10.01 |
[Spring Boot] 00장. 뷰 템플릿과 MVC 패턴 (0) | 2021.10.01 |
[Spring Boot] 00장. 웹 서비스의 동작 원리 (0) | 2021.10.01 |
[Spring Boot] 00장. MVC 웹 프레임워크가 뭔가요? (0) | 2021.10.01 |