[Spring Boot]기본 CRUD API 구현

재피터노트북·2022년 10월 2일
0

CRUD API

클라이언트가 서버에게 요청을 보낼때 크게 4가지로 분류할수 있습니다!

  • Create = POST

    • create는 서버에 정보를 올려달라는 요청임.create는 post를 통해 해당 URI를 요청하면 리소소를 생성함.
  • Read = GET

    • read는 서버에서 정보를 불러오는 요청. GET을 통해 해당 리소소를 조회후 해당 도큐먼트에 대한 자세한 정보를 가져옴.
  • Update = PUT

    • update는 정보를 바꾸는 요청.
  • Delete = DELETE

    • delete는 정보를 지우는 요청. DELETE를 통해 리소스를 삭제할 수 있음.

JSON

  • 서버에서 클라이언트로 데이터를 보낼 때 json 양식을 사용해 전달함.
{
	  Key      Value
    "name" : "이재선",
	"job" : "학생"  

}

직접해보기!!

  • 프로젝트 구조

    • controller
      • PersonController.java
    • dto
      • PersonRequestDto.java
    • entity
      • Person.java
    • repository
      • PersonRepository.interface
    • sevice
      • PersonService.java
    • mainApplication.java
  • API

    기능MethodURL
    친구 생성POST/api/person
    친구 목록 조회GET/api/person
    친구 정보 변경PUT/api/person/{id}
    친구 정보 삭제DELETE/api/person/{id}

소스코드.

  • person.java

package com.sparta.week01.entity;

import com.sparta.week01.dto.PersonRequestDto;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.persistence.*;

@Getter
@NoArgsConstructor
@Entity
public class Person {

    @Id
    @GeneratedValue (strategy = GenerationType.AUTO)
    private Long id;

    @Column(nullable = false)
    private String name;

    @Column(nullable = false)
    private int age;

    public Person(PersonRequestDto requestDto) {
        this.name = requestDto.getName();
        this.age = requestDto.getAge();
    }

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

    public void update(PersonRequestDto requestDto) {
        this.name = requestDto.getName();
        this.age = requestDto.getAge();
    }
}

디비안에 들어갈 컬럼과 ID등을 선언하고 생성자와 DTO에서 값을 가져오기 위한 함수들이 존재한다.

  • PersonRepository.interface

package com.sparta.week01.repository;

import com.sparta.week01.entity.Person;
import org.springframework.data.jpa.repository.JpaRepository;

public interface PersonRepository extends JpaRepository<Person, Long> {
}

클라이언트가 서버에게 정보를 요청한후 해당 정보를 Service에서 DTO로 준후 DTO에서 여기 Repository로 전달해 JPA를 통해 SQL언어로 번역후 값을 전달.

  • PersonRequestDto.java

package com.sparta.week01.dto;


import lombok.Getter;
import lombok.NoArgsConstructor;

@NoArgsConstructor
@Getter
public class PersonRequestDto {

    private String name;
    private int age;

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

Services에서 Repository로 변경값을 전달하기전에 직접적으로 값을 전달하지 않고 DTO를 통해서 전달함.

package com.sparta.week01.service;

import com.sparta.week01.dto.PersonRequestDto;
import com.sparta.week01.entity.Person;
import com.sparta.week01.repository.PersonRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import javax.transaction.Transactional;

@RequiredArgsConstructor
@Service
public class PersonService {
    public final PersonRepository personRepository;

    @Transactional // sql작업선언
    public Long update(Long id, PersonRequestDto requestDto) {
        Person person1 = personRepository.findById(id).orElseThrow(
                () -> new IllegalArgumentException("해당 아이디가 존재하지 않습니다!")
        );
        person1.update(requestDto);
        return person1.getId();
    }
}

서버와 데이터 주고받기

  • 1. Read : 처음 데이터 조회(GET)

  • 2. Create : 데이터 등록(POST)

  • 3. Read : 등록한 데이터 조회(GET)

  • 4. Update : 데이터 수정(PUT)

  • 5. Read : 수정한 데이터 조회(GET)

  • 6. Delete : 데이터 삭제(DELETE)

여기까지 CRUD를 통한 서버와의 통신을 해봤습니다!

profile
난 이 재 선

0개의 댓글