Develop

REST API 개념 및 Java를 활용한 예제

issuemaker99 2024. 12. 24. 17:34
728x90

REST API란?

REST API는 REST(Representational State Transfer) 아키텍처를 기반으로 만들어진 웹 서비스 인터페이스입니다.
HTTP 프로토콜을 사용하여 클라이언트와 서버 간에 데이터를 교환할 수 있도록 설계되었습니다.


REST API의 특징

  1. 자원(Resource) 기반
  2. HTTP 메서드 활용
    • REST API는 HTTP 메서드를 통해 자원에 대한 작업을 정의합니다.
메서드 설명
GET 자원 조회 /users
POST 자원 생성 /users
PUT 자원 전체 수정 /users/1
PATCH 자원 일부 수정 /users/1
DELETE 자원 삭제 /users/1

 

 

  • Stateless(무상태성)
    • 서버는 클라이언트의 상태를 저장하지 않습니다.
      요청마다 필요한 모든 정보를 포함해야 합니다.
  • JSON 기반 데이터 교환
    • REST API는 일반적으로 JSON 형식으로 데이터를 주고받습니다.
      예:
{
  "id": 1,
  "name": "John Doe"
}

 


REST API 간단한 Java 예제

1. Maven 프로젝트 설정

pom.xml에 필요한 라이브러리 추가:

<dependencies>
    <!-- Spring Boot Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

 


2. REST API 서버 코드

(1) Spring Boot REST Controller 생성

다음은 사용자 정보를 관리하는 간단한 REST API 예제입니다.

UserController.java:

package com.example.demo.controller;

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

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

    private Map<Integer, String> users = new HashMap<>();

    // 1. 사용자 목록 조회 (GET)
    @GetMapping
    public Map<Integer, String> getUsers() {
        return users;
    }

    // 2. 사용자 추가 (POST)
    @PostMapping
    public String addUser(@RequestParam String name) {
        int id = users.size() + 1;
        users.put(id, name);
        return "User added with ID: " + id;
    }

    // 3. 특정 사용자 조회 (GET)
    @GetMapping("/{id}")
    public String getUser(@PathVariable int id) {
        return users.getOrDefault(id, "User not found");
    }

    // 4. 사용자 삭제 (DELETE)
    @DeleteMapping("/{id}")
    public String deleteUser(@PathVariable int id) {
        if (users.containsKey(id)) {
            users.remove(id);
            return "User deleted with ID: " + id;
        }
        return "User not found";
    }
}

 


3. REST API 서버 실행

Spring Boot 애플리케이션을 실행합니다.
DemoApplication.java:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

 

서버가 실행되면, 기본적으로 http://localhost:8080에서 REST API를 사용할 수 있습니다.


4. REST API 호출 및 테스트

REST API 호출은 Postman, cURL, 또는 Java의 RestTemplate를 이용할 수 있습니다.
다음은 cURL과 Java 클라이언트를 사용하는 방법입니다.

(1) cURL을 이용한 테스트

  1. 사용자 추가:

curl -X POST "http://localhost:8080/api/users?name=John"

 

 2. 사용자 목록 조회:

curl -X GET "http://localhost:8080/api/users"

 

 3. 특정 사용자 조회:

curl -X GET "http://localhost:8080/api/users/1"

 

 4. 사용자 삭제:

curl -X DELETE "http://localhost:8080/api/users/1"

 


(2) Java 클라이언트로 호출

ApiClient.java:

package com.example.demo.client;

import org.springframework.web.client.RestTemplate;
import org.springframework.http.ResponseEntity;

public class ApiClient {
    public static void main(String[] args) {
        String baseUrl = "http://localhost:8080/api/users";
        RestTemplate restTemplate = new RestTemplate();

        // 1. 사용자 추가
        String addUserUrl = baseUrl + "?name=Alice";
        String addUserResponse = restTemplate.postForObject(addUserUrl, null, String.class);
        System.out.println(addUserResponse);

        // 2. 사용자 목록 조회
        ResponseEntity<String> users = restTemplate.getForEntity(baseUrl, String.class);
        System.out.println("Users: " + users.getBody());

        // 3. 특정 사용자 조회
        ResponseEntity<String> user = restTemplate.getForEntity(baseUrl + "/1", String.class);
        System.out.println("User with ID 1: " + user.getBody());

        // 4. 사용자 삭제
        restTemplate.delete(baseUrl + "/1");
        System.out.println("User with ID 1 deleted");
    }
}

 

LIST