본문 바로가기

CS/Flutter | Dart

HTTP, REST API, RESTful API

HTTP (Hypertext Transfer Protocol)

기기 간 통신하는 법에 대한 일종의 약속

 

웹에서 데이터를 주고받는 데 사용되는 프로토콜이다
클라이언트(일반적으로 브라우저)와 서버 간에 데이터를 요청하고 응답하는 데 사용된다


주로 두 가지 메서드를 사용한다

GET (데이터를 가져오기 위해)

POST (데이터를 서버로 보내기 위해)

 

예를 들어, 웹 페이지를 열면 브라우저가 웹 서버로 GET 요청을 보내고 해당 페이지의 데이터를 수신한다

 

URL 주소와 URL Query로 이루어짐

 

Body

 

Header

요청에 대한 데이터

 

 

 

REST API (Representational State Transfer API)

HTTP를 사용하는 법에 대한 일종의 약속

 

REST는 웹 서비스 아키텍처 스타일 중 하나로, 자원을 표현하고 상태를 전달하는 방법을 규정한다
RESTful API는 자원(일반적으로 URL로 표현)에 대한 CRUD(Create, Read, Update, Delete) 작업을 수행하는 데 사용된다
예를 들어, 블로그 앱에서 게시물 목록을 가져오는 데는 GET 요청을 사용하고

새로운 게시물을 만들려면 POST 요청을 사용할 수 있다

 

GET: 데이터 가져오기

POST: 새로운 데이터 생성

PUT: 데이터 상태 변경하거나 업데이트

DELETE: 데이터 삭제

 

 

 

HTTP 요청과 응답

HTTP 요청은 클라이언트에서 서버로 보내는 메시지다

메서드 (GET, POST 등)와 헤더 (요청에 대한 메타 정보) 그리고 요청 본문(POST 요청에서 데이터)을 포함한다


HTTP 응답은 서버에서 클라이언트로 돌아오는 메시지다

상태 코드(요청이 성공했는지 또는 어떤 문제가 발생했는지 나타냄), 헤더 및 응답 본문(요청 결과 데이터)을 포함한다


Flutter와 HTTP 통신
Flutter에서 HTTP 요청을 보내려면 http 패키지나 다른 HTTP 클라이언트 패키지를 사용한다
예를 들어, http 패키지를 사용하여 서버에 GET 또는 POST 요청을 보낼 수 있고, 서버로부터 응답을 처리할 수 있다
비동기 작업으로 HTTP 요청을 처리하는 것이 일반적이며, async/await 구문을 사용하여 비동기 코드를 작성한다

 

 

 

REST API와 RESTful API 

REST API
자원을 나타내고 상태를 전달하는 아키텍처 스타일을 의미한다
REST는 네트워크 아키텍처를 위한 일반적인 원칙을 제공하며, 이러한 원칙을 따르면 서비스는 URL을 통해 자원을 식별하고,

HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 이러한 자원을 조작할 수 있다
REST API는 단순하고 확장 가능한 디자인을 지향하며, 자원은 유일한 식별자(일반적으로 URL)를 통해 접근되며,

상태는 HTTP 요청과 응답을 통해 전송된다


RESTful API
RESTful API는 REST 아키텍처 원칙을 엄격하게 따르는 API를 나타낸다
RESTful API는 자원을 나타내는 URL이 직관적이고 명확하며,

HTTP 메서드가 해당 자원에 대한 특정한 작업을 수행함을 나타내도록 설계된다

 

RESTful API는 상태를 관리하기 위해 상태 정보를 요청 URL이나 쿼리 매개변수 대신 요청 본문에 넣는 경우가 일반적이다


간단히 말해서, REST API는 REST 아키텍처 스타일을 따르는 모든 API를 나타내는 일반적인 용어이며,

RESTful API는 이러한 원칙을 엄격하게 준수하며 일관되고 직관적인 디자인을 가진 특정한 형태의 REST API를 의미한다

RESTful API는 REST 원칙을 따르는 좋은 예제 중 하나!

 

 

 

 

'CS > Flutter | Dart' 카테고리의 다른 글

미세먼지 측정 앱 #2 - Hive  (19) 2023.09.07
SQL, NoSQL, Hive  (7) 2023.08.31
미세먼지 측정 앱 #1 - 레이아웃  (0) 2023.08.29
RefreshIndicator  (9) 2023.08.27
CustomScrollView - SliverAppBar, SliverPersistentHeader, Scrollbar  (9) 2023.08.27

Tiny Star