JAVA

[JAVA] Gson과 REST API

인생아 2024. 12. 15. 09:22
반응형

Gson과 REST API는 JSON 데이터 포맷을 주고받는 REST API와 Gson을 활용하여 데이터를 처리하는 방법에 초점을 맞춥니다. REST API와 통합하여 효율적으로 데이터를 직렬화 및 역직렬화하고, Retrofit이나 Spring Boot와 같은 프레임워크와 함께 사용하는 방법을 예제를 통해 설명합니다.

REST API와의 통합
Gson은 REST API와의 통합에서 JSON 데이터의 요청(Request)과 응답(Response)을 처리하는 데 중요한 역할을 합니다. 서버에서 반환된 JSON 데이터를 객체로 변환하거나, 객체를 JSON 형식으로 변환하여 서버에 요청을 보낼 수 있습니다.

import com.google.gson.Gson;

class User {
    String name;
    int age;
    String city;

    public User(String name, int age, String city) {
        this.name = name;
        this.age = age;
        this.city = city;
    }
}

public class RestApiExample {
    public static void main(String[] args) {
        // 객체를 JSON으로 변환 (Request)
        User user = new User("김영희", 25, "서울");
        Gson gson = new Gson();
        String jsonRequest = gson.toJson(user);
        System.out.println("JSON Request: " + jsonRequest);

        // JSON 응답을 객체로 변환 (Response)
        String jsonResponse = "{ \"name\": \"박철수\", \"age\": 30, \"city\": \"부산\" }";
        User responseUser = gson.fromJson(jsonResponse, User.class);
        System.out.println("Response User: " + responseUser.name + ", " + responseUser.age + ", " + responseUser.city);
    }
}
반응형

Retrofit과 함께 사용하는 방법
Retrofit은 REST API 클라이언트 라이브러리로 Gson을 활용해 JSON 데이터를 간단히 처리할 수 있습니다. Gson을 통합하려면 GsonConverterFactory를 추가하면 됩니다.

import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;

class User {
    String name;
    int age;
    String city;
    // 생성자, getter, setter 생략
}

interface ApiService {
    @GET("/users")
    Call<User> getUser();

    @POST("/users")
    Call<Void> createUser(@Body User user);
}

public class RetrofitExample {
    public static void main(String[] args) {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://api.example.com")
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        ApiService apiService = retrofit.create(ApiService.class);

        // POST 요청 예제
        User newUser = new User("홍길동", 27, "대구");
        Call<Void> call = apiService.createUser(newUser);
        // 실제 네트워크 요청은 비동기로 처리 (enqueue 사용)
    }
}

Spring Boot와 함께 사용하는 방법
Spring Boot에서는 기본적으로 Jackson이 사용되지만, Gson을 대체로 사용할 수도 있습니다. GsonHttpMessageConverter를 설정하여 Gson을 사용할 수 있습니다.

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.GsonHttpMessageConverter;

@Configuration
public class GsonConfig {
    @Bean
    public GsonHttpMessageConverter gsonHttpMessageConverter() {
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        return new GsonHttpMessageConverter(gson);
    }
}

JSON Request/Response 데이터 변환 예제
Spring Boot 컨트롤러에서 JSON 요청을 Gson으로 처리하는 방법은 다음과 같습니다.

import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/users")
public class UserController {

    @PostMapping
    public String createUser(@RequestBody User user) {
        return "사용자가 생성되었습니다: " + user.name + ", " + user.city;
    }

    @GetMapping("/{name}")
    public User getUser(@PathVariable String name) {
        return new User(name, 28, "인천");
    }
}

Gson의 장점과 REST API에서 활용

  1. 경량화된 JSON 처리: Gson은 가볍고 직관적이기 때문에 빠른 개발과 디버깅이 가능합니다.
  2. 객체 변환의 유연성: 복잡한 JSON 구조에서도 쉽게 객체로 변환 가능합니다.
  3. 프레임워크와의 통합: Retrofit과 Spring Boot와 같은 인기 프레임워크와 자연스럽게 통합됩니다.

참고사이트

반응형