π Delete API!
π μ ꡬνλ λΆλΆ
1. λͺ νν κ³μΈ΅ λΆλ¦¬
- Controllerλ HTTP μμ² μ²λ¦¬μ μ§μ€
- Serviceλ λΉμ¦λμ€ λ‘μ§ λ΄λΉ
- Repositoryλ λ°μ΄ν° μ κ·Ό κ³μΈ΅μΌλ‘ μν λΆλ¦¬
- κ° κ³μΈ΅μ μ± μμ΄ λͺ ννκ² κ΅¬λΆλμ΄ μ μ§λ³΄μκ° μ©μ΄ν©λλ€
2. RESTful URI μ€κ³
@DeleteMapping("/delete/student/{studentId}")
- 리μμ€(student) μ€μ¬μ URI μ€κ³
- μ μ ν HTTP λ©μλ(DELETE) μ¬μ©
- RESTful μμΉμ μ μ€μνκ³ μμ΅λλ€
3. νΈλμμ κ΄λ¦¬
@Transactional
public void deleteStudent(String studentId) { ... }
-
@Transactional
μ΄λ Έν μ΄μ μ ν΅ν μμμ± λ³΄μ₯ - μμ μμ μ μμ μ± ν보
π€ κ°μ μ΄ νμν λΆλΆ
1. μνν μ΄μ€ μμ λ‘μ§
π νμ¬ μ½λμ λ¬Έμ μ
@Transactional
public void deleteStudent(String studentId) {
// 1λ¨κ³: deleteByStudentId()μμ μ΄λ―Έ DELETE 쿼리 μ€ν
Student deletedStudent = studentRepository.deleteByStudentId(studentId);
// 2λ¨κ³: μ΄λ―Έ μμ λ μν°ν°λ₯Ό λ€μ μμ μλ (λΆνμνκ³ μν!)
studentRepository.delete(deletedStudent);
}
μ λ¬Έμ μΈκ°?
-
deleteBy...
λ©μλλ λ΄λΆμ μΌλ‘ DELETE 쿼리λ₯Ό μ€νν©λλ€ - μ΄λ―Έ μμ λ μν°ν°λ₯Ό λ€μ μμ νλ € μλνλ©΄ μμΈκ° λ°μν μ μμ΅λλ€
- λΆνμν μ€λ³΅ λ‘μ§μΌλ‘ νΌλμ μΌκΈ°ν©λλ€
β κ°μ λ μ½λ
@Transactional
public void deleteStudent(String studentId) {
// 1λ¨κ³: μν°ν° μ‘΄μ¬ μ¬λΆ νμΈ
Student student = studentRepository.findByStudentId(studentId)
.orElseThrow(() -> new IllegalArgumentException("μ‘΄μ¬νμ§ μλ νμμ
λλ€."));
// 2λ¨κ³: μ‘°νλ μν°ν° μμ
studentRepository.delete(student);
}
κ°μ ν¨κ³Ό
- λͺ νν μμ νλ‘μΈμ€: μ‘°ν β κ²μ¦ β μμ
- μ‘΄μ¬νμ§ μλ νμ ID μμ² μ λͺ μμ μΈ μμΈ μ²λ¦¬
- μ½λμ μλκ° λͺ ννμ¬ μ μ§λ³΄μμ± ν₯μ
2. λΆμ μ ν HTTP μλ΅ μν μ½λ
π νμ¬ μ½λμ λ¬Έμ μ
@DeleteMapping("/delete/student/{studentId}")
public void deleteStudent(@PathVariable String studentId) {
studentService.deleteStudent(studentId);
// κΈ°λ³Έμ μΌλ‘ 200 OK λ°ν
}
μ λ¬Έμ μΈκ°?
- μμ μ±κ³΅ μ λ°νν λ³Έλ¬Έμ΄ μλλ°
200 OK
λ₯Ό λ°ν - REST API νμ€μ λ°λ₯΄λ©΄ λ³Έλ¬Έμ΄ μμ λλ
204 No Content
κ° μ μ
β κ°μ λ μ½λ
@DeleteMapping("/delete/student/{studentId}")
public ResponseEntity<Void> deleteStudent(@PathVariable String studentId) {
studentService.deleteStudent(studentId);
return ResponseEntity.noContent().build(); // 204 No Content
}
κ°μ ν¨κ³Ό
- REST API νμ€μ μ νν μ€μ
- ν΄λΌμ΄μΈνΈμκ² λͺ νν μλ―Έ μ λ¬ (μμ μλ£, λ°ν λ³Έλ¬Έ μμ)
- API λ¬Έμν μ λ λͺ νν μ€ν μ 곡
π μμ½
κ΅¬λΆ | λ΄μ© | μ€μλ |
---|---|---|
β μ μ§ | κ³μΈ΅ λΆλ¦¬, RESTful μ€κ³, νΈλμμ κ΄λ¦¬ | - |
β οΈ μμ νμ | μ΄μ€ μμ λ‘μ§ μ κ±° | π΄ λμ |
π‘ κΆμ₯ | HTTP 204 μν μ½λ μ¬μ© | π‘ μ€κ° |
μ΅μ’ κΆμ₯ μ¬ν
- Service κ³μΈ΅: μ‘°ν ν μμ ν¨ν΄μΌλ‘ λ³κ²½νμ¬ μμ μ± ν보
-
Controller κ³μΈ΅:
ResponseEntity<Void>
λ‘ λͺ μμ μΈ 204 μλ΅ λ°ν - μ΄λ₯Ό ν΅ν΄ λ μμ νκ³ νμ€μ μ€μνλ APIλ₯Ό μ 곡ν μ μμ΅λλ€