[Mastering Spring 5.0] 6.1 μμΈμ²λ¦¬
Mastering Spring 5.0 μ€ν°λ
Contents
μ€νλ§ 5.0 λ§μ€ν° μ€ν°λ
μ€νλ§ 5.0 λ§μ€ν° μ€ν°λ νμ΅ λ΄μ© μ 리μ
λλ€.
1. μ€νλ§ λΆνΈμ κΈ°λ³Έ μμΈμ²λ¦¬
- μ€νλ§λΆνΈμ κΈ°λ³Έ μμΈ νμμ throw λ μμΈ λ©μΈμ§ μ ν¨κ» JSON ννλ‘ μλ¬λ₯Ό 리ν΄νλ€.
- λΈλΌμ°μ κ²½μ°
κΈ°λ³Έ μ€λ₯ νμ΄μ§ (Whilelabel Error Page)
λ₯Ό μΆλ ₯νλ€.
|
|
2. μ€νλ§ μ¬μ©μ μ μ μμΈμ²λ¦¬
μ€νλ§μμλ μ€λ₯μ λν μλ΅μ μ¬μ©μκ° μ μνλ μ¬λ¬ μ΅μ μ μ 곡νλ€.
2.1 μλ΅ λ©μΈμ§ μ¬μ©μ μ μ νκΈ°
μ£Όμ΄μ§ IDκ° κ°μ§κ³ μλ todo 리μ€νΈκ° λ°κ²¬λμ§ μμμ λ λ°μμν¬ μ¬μ©μ μ μ TodoNotFoundException
μ λ©μΈμ§ μ²λ¦¬λ₯Ό ν ExceptionResponse
κ°μ²΄λ₯Ό μμ±νλ€.
TodoNotFoundException.java
|
|
ExceptionResponse.java
|
|
TodoNotFoundExcption
μ΄ λ°μνλ©΄ ExceptionResponse
Bean μ μ¬μ©ν΄ μλ΅μ λ°νν 컨νΈλ‘€λ¬λ₯Ό μμ±νλ€.
|
|
2.2 λͺ¨λ μμΈμ μ¬μ©μ μ μ μμΈμ²λ¦¬ μ μνκΈ°
μλ μ½λλ μ¬μ©μ μ μ μμΈ μ΄μΈμ λͺ¨λ μμΈμ λν΄ μ¬μ©μ μ μ μμΈ λ©μΈμ§λ₯Ό μλ΅νλλ‘ μ€μ νλ€.
|
|
@ControllerAdvice
λ₯Ό μ΄μ©νμ¬@ExceptionHander
λ₯Ό λͺ¨λ ν¨ν€μ§ λ° μ»¨νΈλ‘€λ¬μμ μ μμ μΌλ‘ μ¬μ©ν μ μλλ‘ μ μνλ€.@ExceptionHandler(TodoNotFoundException.class)
κ° νΉμ μλ¬ μ ν(ν΄λμ€) μ λν΄ μμΈμ²λ¦¬ νλλ‘ μ μνλ€. μ¬μ©μ μμΈ μ²λ¦¬κ° λμ΄ μμ§ μμ λ€λ₯Έ μμΈλ μ€νλ§λΆνΈμ κΈ°λ³Έ μμΈμ²λ¦¬ ννλ₯Ό λ°λ₯Έλ€.@RestController
μ μ¬μ©νμ¬ ν΄λΌμ΄μΈνΈμκ² μλ΅μ²λ¦¬λ₯Ό ν μ μκ² νλ€.
2.3 μ¬μ©μ μ μ μλ¬μ νΉμ HTTP μλ΅ μν μ§μ νκΈ°
@ResponseStatus
μ΄λ
Έν
μ΄μ
μ μ¬μ©νμ¬ μ»€μ€ν
μλ¬μ νΉμ HTTP μλ΅ μνλ₯Ό μ§μ ν μ μλ€.
|
|
3. HTTP μλ΅ μν μ½λ
- μμΈ μλ΅μ½λ μ μ : https://developer.mozilla.org/ko/docs/Web/HTTP/Status
μλ΅ μν | μν© |
---|---|
400 - BAD REQUEST | μμ²λ³Έλ¬Έμ΄ API μ€νμ μΆ©μ‘±νμ§ λͺ»νμ¬ μλ²κ° μμ²μ μ΄ν΄ν μ μμμ μλ―Έ. |
401 - UNAUTHORIZED | μΈμ¦ λλ κΆν λΆμ¬ μ€ν¨ |
403 - RESOURCE FORBIDDEN | ν΄λΌμ΄μΈνΈκ° 컨ν μΈ μ μ κ·Όν κΆλ¦¬λ₯Ό κ°κ³ μμ§ μμ. 401 κ³Ό λ€λ₯Έ μ μ ν΄λΌμ΄μΈνΈκ° λꡬμΈμ§ μκ³ μμ. |
404 - RESOURCE NOT FOUND | μμ²ν 리μμ€κ° μ‘΄μ¬νμ§ μμ |
405 - METHOD NOT ALLOWED | μ§μλμ§ μλ μ€νΌλ μ΄μ (ex : GET μμ²ν νμ©λλ 리μμ€μ POST μμ²μ μλ) |
500 - INTERNAL SERVER ERROR | μλ²μμ μλ¬κ° λ°μνμ¬, μλΉμλ μ΄ λ¬Έμ λ₯Ό ν΄κ²° ν μ μμ. |