RESTful API란?
REST란?
- Representational State Transfer의 약자
- 데이터를 이름으로 구분하여 상태를 주고 받는 모든 것
- 웹의 HTTP프로토콜을 이용해서 데이터를 교환하는 통신
- HTTP URI를 통해 자원을 명시
- HTTP Method(POST, GET, PUT, DELETE)를 통해 CRUD
API란?
- 소프트웨어 응용 프로그램에서 다른 소프트웨어 구성 요소 또는 서비스와 상호 작용하기 위한 인터페이스
RESTful란?
- 이해하기 쉽고 사용하기 좋은 REST api를 위한 약속
- URI의 마지막에 '/'를 사용하지 않음 등의 규칙
간단한 API 구현해보기
- 간단하게 스포츠 팀을 Json형식으로 반환하는 API를 구현해보자!
Team 객체 만들기
- 반환을 위한 Team 객체를 만들어야 한다.
- 자바의 record를 이용해서 구현하였다.
- record란 JDK16에 정식으로 포함된 기능으로 불변의 데이터 객체를 생성하기 위한 클래스
- 생성자와 toString, equals, hashCode 메소드에 대한 구현을 자동으로 제공
- Team.java
package com.chan.ssb;
public record Team(long id, String name, String city, int championships) {
}
- id, name, city, championships으로 구성하였다.
Controller 구현하기
- @RestController를 이용해서 구현하였다.
- @RestController: @Controller + @ResponseBody로 Json 반환을 위한 Controller이다.
- TeamController.java
package com.chan.ssb;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.atomic.AtomicLong;
@RestController
public class TeamController {
private final AtomicLong counter = new AtomicLong();
@RequestMapping("/team")
public List<Team> retrieveAllTeams() {
return Arrays.asList(
new Team(counter.incrementAndGet(), "Lakers", "Los Angeles", 17),
new Team(counter.incrementAndGet(), "Celtics", "Boston", 17),
new Team(counter.incrementAndGet(), "Warriors", "Golden State", 6)
);
}
}
- AtomicLong counter = new AtomicLong(): 동시성을 보장하는 Long타입을 가지는 객체, id 생성을 위해 사용한다.

다음과 같이 조회할 수 있다면 제대로 따라한 것이다!