[Start Spring Boot] RESTful API 만들기1

·2024년 3월 13일
0

Start Spring Boot!

목록 보기
8/53
post-thumbnail

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 {

    // Team: id, name, city, championships
    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 생성을 위해 사용한다.

    다음과 같이 조회할 수 있다면 제대로 따라한 것이다!
profile
백엔드 개발자가 꿈인 컴공과

0개의 댓글

관련 채용 정보