[Start Spring Boot] RESTful API 만들기3(CRUD)

·2024년 3월 13일
0

Start Spring Boot!

목록 보기
10/53
post-thumbnail

CRUD?

  • Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말
  • 기본적인 데이터 처리 기능

Http Method 이해하기

  • GET: 서버로 부터 데이터를 취득
  • POST: 서버에 데이터를 추가, 작성 등
  • PUT: 서버의 데이터를 갱신, 작성 등
  • DELETE: 서버의 데이터를 삭제
  • HEAD: 서버 리소스의 헤더(메타 데이터의 취득)
  • OPTIONS: 리소스가 지원하고 있는 메소드의 취득
  • PATCH: 리소스의 일부분을 수정
  • CONNECT: 프록시 동작의 터널 접속을 변경

다음의 8가지가 있다.

  • Create(POST), Read(GET), Update(PUT), Delete(DELETE)를 사용할 것이다.

Controller 구성하기

List 추가하기

  • 아직 JPA를 사용하지 않고 배열을 이용해서 데이터를 관리할 것이다.
    private final List<Team> teams = new ArrayList<>();
    

Read(GET)

    @GetMapping("/team")
    public List<Team> getAllTeams() {
        return teams;
    }

    @GetMapping("/team/{id}")
    public Team getTeam(@PathVariable long id) {
        for (Team team : teams) {
            if (team.id() == id) {
                return team;
            }
        }
        return null;
    }
    
  • @GetMapping을 이용해서 처리할 수 있다.
  • @PathVariable long id: {id} 패스상의 id를 가져온다.

Create(POST)

    @PostMapping("/team")
    public Team createTeam(Team team) {
        Team newTeam = new Team(counter.incrementAndGet(), team.name(), team.city(), team.championships());
        teams.add(newTeam);
        return newTeam;
    }
    
  • createTeam(Team team): 인자로 팀을 받는다. @RequestBody의 경우 생략이 가능하다.
  • 새로운 팀을 만들어서 리스트에 추가한다.

Update(PUT)

    @PutMapping("/team/{id}")
    public Team updateTeam(@PathVariable long id, Team team) {
        for (int i = 0; i < teams.size(); i++) {
            if (teams.get(i).id() == id) {
                Team updatedTeam = new Team(id, team.name(), team.city(), team.championships());
                teams.set(i, updatedTeam);
                return team;
            }
        }
        return null;
    }
    
  • @PathVariable, @RequestBody는 같이 사용이 가능하다.

Delete(DELETE)

    @DeleteMapping("/team/{id}")
    public void deleteTeam(@PathVariable long id) {
        teams.removeIf(team -> team.id() == id);
    }
    

완성코드

  • TeamController.java
package com.chan.ssb;

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

import java.util.ArrayList;
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();
    private final List<Team> teams = new ArrayList<>();

    @GetMapping("/team")
    public List<Team> getAllTeams() {
        return teams;
    }

    @PostMapping("/team")
    public Team createTeam(Team team) {
        Team newTeam = new Team(counter.incrementAndGet(), team.name(), team.city(), team.championships());
        teams.add(newTeam);
        return newTeam;
    }

    @PutMapping("/team/{id}")
    public Team updateTeam(@PathVariable long id, Team team) {
        for (int i = 0; i < teams.size(); i++) {
            if (teams.get(i).id() == id) {
                Team updatedTeam = new Team(id, team.name(), team.city(), team.championships());
                teams.set(i, updatedTeam);
                return team;
            }
        }
        return null;
    }

    @DeleteMapping("/team/{id}")
    public void deleteTeam(@PathVariable long id) {
        teams.removeIf(team -> team.id() == id);
    }
}


다음과 같이 출력된다면 성공적이다!

profile
백엔드 개발자가 꿈인 컴공과

0개의 댓글

관련 채용 정보