API - Spring

Boram_Choi·2021년 11월 9일
0
  • CRUD. 즉, A에 대해 생성(POST)/조회(GET)/수정(PUT)/삭제(DELETE) 요청을 하는 것

1. Person.java

Person 클래스를 만들고, 멤버변수(id,name,job) private 으로 설정.
@Entity 로 테이블 생성해주고
@Getter 로 멤버변수 사용할수 있게 해주고,
@NoArgsConstructor 로 기본생성자 설정.

@GeneratedValue(strategy = GenerationType.AUTO) 로 자동증가
@Id 로 id 값 설정
각 멤버변수마다 @Column(nullable = false) 으로 꼭 있어야 하는 테이블 열 생성

Person 기본메소드, 정보 받아오고
update 로 수정정보 받아온다.

@Getter
@NoArgsConstructor
@Entity
public class Person {

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

    @Column(nullable = false)
    private String name;

    @Column(nullable = false)
    private String job;

    @Column(nullable = false)
    private int age;

    @Column(nullable = false)
    private String address;

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

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

2.PersonRequestDto.java 수정정보등록

@Getter
public class PersonRequestDto {
    private String name;
    private String job;
    private int age;
    private String address;
}

3.PersonRepository.java JPA로 SQL문 생성

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

4.PersonService.java 수정정보 처리

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

    @Transactional
    public Long update(Long id, PersonRequestDto requestDto) {
        Person person = personRepository.findById(id).orElseThrow(
                () -> new IllegalArgumentException("해당 id가 존재하지 않습니다.")
        );
        person.update(requestDto);
        return person.getId();
    }
}

5.PersonController.java API 요청/응답

@RequiredArgsConstructor
@RestController
public class PersonController {

    private final PersonService personService;
    private final PersonRepository personRepository;

    @GetMapping("/api/persons")
    public List<Person> getPersons() {
        return personRepository.findAll();
    }

    @PostMapping("/api/persons")
    public Person createPerson(@RequestBody PersonRequestDto requestDto) {
        Person person = new Person(requestDto);
        return personRepository.save(person);
    }

    @PutMapping("/api/persons/{id}")
    public Long updatePerson(@PathVariable Long id, @RequestBody PersonRequestDto requestDto) {
        return personService.update(id, requestDto);
    }

    @DeleteMapping("/api/persons/{id}")
    public Long deletePerson(@PathVariable Long id) {
        personRepository.deleteById(id);
        return id;
    }
}
profile
하루하루의 기록, 그리고 성장

1개의 댓글

comment-user-thumbnail
2021년 11월 9일

[Application.java]

package com.sparta.item02;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

@EnableJpaAuditing
@SpringBootApplication
public class Item02Application {

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

}
답글 달기