REST(Representational State Transfer)는 인터넷에서 자원을 정의하고 자원에 대한 주소를 지정하는 방법론입니다. RESTful API는 클라이언트와 서버간의 통신 방식 중 하나로, REST를 기반으로 설계된 API를 의미합니다.
RESTful API는 현재 대부분의 웹 서비스에서 사용되고 있으며, 클라이언트와 서버간의 유연한 통신 방식으로 인해 인기를 얻고 있습니다.
안드로이드에서 RESTful API를 사용하려면, 먼저 HTTP 통신을 위한 라이브러리를 추가해야 합니다. 대표적으로는 OkHttp나 Retrofit이 있습니다.
Create: POST 메서드를 사용하여 새로운 데이터를 생성합니다. 데이터는 요청 본문에 담겨 전송됩니다.
Read: GET 메서드를 사용하여 데이터를 조회합니다. 데이터는 요청 주소에 포함될 수 있으며, 요청 본문에 데이터를 담아 보내는 경우는 거의 없습니다.
Update: PUT 또는 PATCH 메서드를 사용하여 데이터를 수정합니다. PUT은 전체 데이터를 교체하는 경우에, PATCH는 일부 데이터만 수정하는 경우에 사용됩니다. 데이터는 요청 본문에 담겨 전송됩니다.
Delete: DELETE 메서드를 사용하여 데이터를 삭제합니다. 삭제할 데이터의 식별자는 요청 주소에 포함됩니다.
Create: POST /users - 새로운 사용자 정보를 생성
Read: GET /users/{id} - 특정 사용자 정보를 조회
Update: PUT /users/{id} - 특정 사용자 정보를 수정, 전체 정보를 교체하는 경우에 사용
Update: PATCH /users/{id} - 특정 사용자 정보를 수정, 일부 정보만 수정하는 경우에 사용
Delete: DELETE /users/{id} - 특정 사용자 정보를 삭제
이렇게 CRUD 기능을 이용하여 RESTful API를 설계하면, 클라이언트와 서버 간의 통신이 효율적이고 일관성 있게 이루어질 수 있습니다.
(Retrofit을 사용)
dependencies {
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
}
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("<https://example.com/>") // API 서버 주소
.addConverterFactory(GsonConverterFactory.create()) // JSON 파싱을 위한 컨버터 추가
.build();
public interface ApiService {
@GET("users/{id}")
Call<User> getUser(@Path("id") int userId);
}
ApiService apiService = retrofit.create(ApiService.class);
Call<User> call = apiService.getUser(1);
call.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
if (response.isSuccessful()) {
User user = response.body();
// 요청 성공 처리
} else {
// 요청 실패 처리
}
}
@Override
public void onFailure(Call<User> call, Throwable t) {
// 통신 실패 처리
}
});
이렇게 Retrofit을 이용해 RESTful API를 사용할 수 있습니다.
import requests
# GET 요청 보내기
response = requests.get('<https://jsonplaceholder.typicode.com/todos/1>')
# 응답 데이터 출력하기
print(response.json())
# POST 요청 보내기
data = {'title': 'foo', 'body': 'bar', 'userId': 1}
response = requests.post('<https://jsonplaceholder.typicode.com/posts>', data=data)
# 응답 데이터 출력하기
print(response.json())
requests 라이브러리를 이용하면 간단하게 GET 요청과 POST 요청을 보낼 수 있습니다. 보내고 싶은 URL을 지정하고, 필요한 데이터를 함께 보내면 됩니다. 요청에 대한 응답은 response 객체에 저장됩니다. 이 객체에서 응답 데이터를 추출할 수 있습니다.
물론, requests 라이브러리 외에도 다양한 라이브러리를 사용할 수 있습니다. 예를 들어 Flask나 Django 같은 웹 프레임워크에서는 RESTful API를 쉽게 구현할 수 있도록 지원하는 기능들이 있습니다.