Notice
Recent Posts
Recent Comments
Link
archive
REST API 실습 본문
Person테이블에 데이터를 CRUD하는 API를 작성하였다.
Person.java
@Setter
@Getter
@NoArgsConstructor
@Entity
public class Person extends Timestamped {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(nullable = false)
private String name;
@Column(nullable = false)
private int age;
@Column(nullable = false)
private String job;
public Person(String name, int age, String job) {
this.name = name;
this.age = age;
this.job = job;
}
public Person(PersonRequestDto requestDto){
this.name=requestDto.getName();
this.age=requestDto.getAge();
this.job=requestDto.getJob();
}
public void update(PersonRequestDto requestDto) {
this.name=requestDto.getName();
this.age=requestDto.getAge();
this.job=requestDto.getJob();
}
}
PersonRequestDto.java
@Getter
@Setter
@RequiredArgsConstructor
public class PersonRequestDto {
private String name;
private int age;
private String job;
}
PersonRepository.java
public interface PersonRepository extends JpaRepository<Person, Long> {
}
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 not exists")
);
person.update(requestDto);
return person.getId();
}
}
PersonController.java
@RequiredArgsConstructor
@RestController
public class PersonController {
private final PersonRepository personRepository;
private final PersonService personService;
//GET API
@GetMapping("/api/persons")
public List<Person> getPersons(){
return personRepository.findAll();
}
//POST API
@PostMapping("/api/persons")
public Person createPerson(@RequestBody PersonRequestDto requestDto){
Person person = new Person(requestDto);
return personRepository.save(person);
}
//PUT API
@PutMapping("/api/persons/{id}")
public Long updatePerson(@PathVariable Long id, @RequestBody PersonRequestDto requestDto){
return personService.update(id, requestDto);
}
//DELETE API
@DeleteMapping("/api/persons/{id}")
public Long deletePerson(@PathVariable Long id){
personRepository.deleteById(id);
return id;
}
}
'STUDY > Spring' 카테고리의 다른 글
네이버 쇼핑 검색 API 이용하기 (0) | 2021.02.07 |
---|---|
[JPA] 특정 기간 내의 데이터만 조회하기 (0) | 2021.02.07 |
JPA란? / Domain, Repository, Service / CRUD실습 (0) | 2021.01.21 |
[Spring] @RestController (0) | 2021.01.20 |
Port 8080 was already in use 오류 해결법 (mac OS) (0) | 2021.01.18 |
Comments