Closed isayaksh closed 11 months ago
HTTP μν μ½λ 204 "No Content"λ μλ²μμ μ±κ³΅μ μΈ μμ²μ μ²λ¦¬νμ§λ§ μλ΅μΌλ‘ λ³Έλ¬Έ (response body)μ λ°ννμ§ μμμ λνλ λλ€. μ΄κ²μ λͺ μμ μΌλ‘ μλ΅ λ³Έλ¬Έμ΄ λΉμ΄μμμ μλ―Ένλ©°, ν΄λΌμ΄μΈνΈλ μλ΅μμ μ΄λ ν λ°μ΄ν°λ λ°μ§ μλλ€λ κ²μ κΈ°λν©λλ€. λ°λΌμ HTTP μν μ½λ 204λ₯Ό μ¬μ©νλ κ²½μ°, μλ²λ μλ΅μ λ°μ΄ν°λ₯Ό ν¬ν¨ν΄μλ μλ©λλ€. λ§μ½ μλ²κ° μ΄λ€ λ°μ΄ν°λ₯Ό μ λ¬ν΄μΌ νλ€λ©΄, λ€λ₯Έ μν μ½λ (μ: 200 OK)λ₯Ό μ¬μ©ν΄μΌ ν©λλ€.
ChatGPTμ Http Status Code 204μ λν μ§λ¬Έμ μλ΅μ΄λ€. λ΄μ©μ 보면 ν΄λΌμ΄μΈνΈλ μλ΅μμ μ΄λ ν λ°μ΄ν°λ λ°μ§ μλ κ²μ κΈ°λνκ³ HTTP μν μ½λ 204λ₯Ό μ¬μ©νλ κ²½μ°, μλ²λ μλ΅μ λ°μ΄ν°λ₯Ό ν¬ν¨ν΄μλ μλ©λλ€. λΌλ κ²μ μ μ μκ³ , μ°λ¦¬κ° 204λ₯Ό μ¬μ©νλ κ²½μ°λ λ€μκ³Ό κ°μ μν©μμ μ μ©ν΄μΌ μ¬λ°λ₯΄κ² Http Status codeλ₯Ό μ¬μ©νλ€κ³ λ³Ό μ μλ€.
ν΄λΌμ΄μΈνΈλ μλ΅μμ μ΄λ ν λ°μ΄ν°λ λ°μ§ μλ κ²μ κΈ°λνκ³ HTTP μν μ½λ 204λ₯Ό μ¬μ©νλ κ²½μ°, μλ²λ μλ΅μ λ°μ΄ν°λ₯Ό ν¬ν¨ν΄μλ μλ©λλ€.
204
μμ²μ΄ μ±κ³΅μ μΌλ‘ μ²λ¦¬λμμ§λ§ μλ΅μΌλ‘ λ°μ΄ν°λ₯Ό λ°νν νμκ° μλ κ²½μ°: μλ₯Ό λ€μ΄, ν΄λΌμ΄μΈνΈκ° μλ²μ 리μμ€μ μ λ°μ΄νΈλ₯Ό μμ²νκ³ , μλ²λ 리μμ€κ° μ λ°μ΄νΈλμμμ νμΈνκ³ μΆκ° λ°μ΄ν°λ₯Ό λ°ννμ§ μλ κ²½μ°μ μ¬μ©λλ€. ν΄λΌμ΄μΈνΈλ λ¨μν μμ²μ μ±κ³΅μ νμΈνκ³ μΆκ° μ 보λ₯Ό λ°μ νμκ° μμ λ μ μ©νλ€.
DELETE μμ²μ μ±κ³΅: ν΄λΌμ΄μΈνΈκ° DELETE μμ²μ 보λ΄μ΄ 리μμ€λ₯Ό μμ νκ³ , 리μμ€κ° μ±κ³΅μ μΌλ‘ μμ λ κ²½μ°μ 204 μν μ½λλ₯Ό μ¬μ©νλ€. μμ νμ μμ λ 리μμ€μ λν μΆκ° μ 보λ₯Ό λ°νν νμκ° μλ κ²½μ°μ μ¬μ©νλ€.
PUT λλ PATCH μμ²μ μ±κ³΅: ν΄λΌμ΄μΈνΈκ° μλ²μ 리μμ€λ₯Ό μ λ°μ΄νΈνλ PUT λλ PATCH μμ²μ 보λ΄κ³ , μ λ°μ΄νΈκ° μ±κ³΅μ μΌλ‘ μλ£λμμ λ 204λ₯Ό μ¬μ©ν μ μλ€. μ λ°μ΄νΈ μμ μμ²΄κ° μ±κ³΅μ΄λ©° μΆκ° λ°μ΄ν°κ° νμνμ§ μμ λ μ μ©νλ€.
HEAD μμ²: HEAD μμ²μ GET μμ²κ³Ό μ μ¬νμ§λ§ μλ΅μ λ³Έλ¬Έμ΄ μλ κ²½μ°μ μ¬μ©λλ€. λ°λΌμ 204 No Content μν μ½λκ° μ¬μ©λ μ μλ€.
HTTP μν μ½λ 204λ μμ²μ μ±κ³΅μ λνλ΄κ³ , μΆκ° μ 보λ λ°μ΄ν°κ° νμνμ§ μμ λ μ¬μ©λλ€. ν΄λΌμ΄μΈνΈκ° μμ²μ μ΄ν΄νκ³ μ²λ¦¬νμ§λ§ μλ΅ λ³Έλ¬Έμ κΈ°λνμ§ μμ λ μ¬μ©νλ κ²μ΄ μ’λ€.
νμ¬ μ¬μ©μμ μΉ΄ν 맀μ₯ μμ½ λ΄μμ μ‘°νν λ μμ½ λ΄μμ΄ μ‘΄μ¬νμ§ μλλ€λ©΄ Http Status Codeμ 204λ₯Ό λ΄μ μ μ‘νκ³ μλ€.
// μ λ³΄κ° μλ€λ©΄ null κ°μΌλ‘ λ°ννλ©°, μμΈμ²λ¦¬λ‘ 204λ₯Ό 보λ if (reserved == null) { throw new CustomNoContentException("μμ½μ΄ μ‘΄μ¬νμ§ μμ΅λλ€."); }
@ExceptionHandler(CustomNoContentException.class) public ResponseEntity<?> apiException(CustomNoContentException e) { log.error(e.getMessage()); return new ResponseEntity<>(new ResponseDto<>(-1, e.getMessage(), null), HttpStatus.NO_CONTENT); }
CustomNoContentExceptionHandlerμμλ λΆλͺ ResponseBodyλ₯Ό λ΄μμ μ μ‘νλλ‘ μ€μ λμ΄ μμ§λ§, μλ΅ κ²°κ³Όλ λ€μκ³Ό κ°λ€.
CustomNoContentExceptionHandler
Response Bodyμ λͺ¨λ λ΄μ©μ΄ μμ λμ΄ μλ€. λ§μ½ νμ¬ Responseμ Http Status Codeκ° 204(NO_CONTENT)μΌ κ²½μ° SpringMVCμμ μλμΌλ‘ Bodyμ λ΄μ©μ μμ νκΈ° λλ¬Έμ΄λ€.
NO_CONTENT
λ°λΌμ μμ½ λ΄μμ΄ μ‘΄μ¬νμ§ μμλ Response Bodyκ° λλ½λμ§ μλλ‘ νκΈ° μν΄μλ Http Status Codeλ₯Ό 200(OK)μΌλ‘ μμ νλ κ²μ΄ μ¬λ°λ₯Έ μ¬μ©λ²μ΄μ§ μμκΉ μκ°νλ€.
OK
π Http Status code 204μ λν κ°λ κ³Ό μ¬μ©λ°©λ²
Http Status code 204
ChatGPTμ Http Status Code 204μ λν μ§λ¬Έμ μλ΅μ΄λ€. λ΄μ©μ 보면
ν΄λΌμ΄μΈνΈλ μλ΅μμ μ΄λ ν λ°μ΄ν°λ λ°μ§ μλ κ²μ κΈ°λνκ³ HTTP μν μ½λ 204λ₯Ό μ¬μ©νλ κ²½μ°, μλ²λ μλ΅μ λ°μ΄ν°λ₯Ό ν¬ν¨ν΄μλ μλ©λλ€.
λΌλ κ²μ μ μ μκ³ , μ°λ¦¬κ°204
λ₯Ό μ¬μ©νλ κ²½μ°λ λ€μκ³Ό κ°μ μν©μμ μ μ©ν΄μΌ μ¬λ°λ₯΄κ² Http Status codeλ₯Ό μ¬μ©νλ€κ³ λ³Ό μ μλ€.Http Status Code 204 μ¬μ© μμ
μμ²μ΄ μ±κ³΅μ μΌλ‘ μ²λ¦¬λμμ§λ§ μλ΅μΌλ‘ λ°μ΄ν°λ₯Ό λ°νν νμκ° μλ κ²½μ°: μλ₯Ό λ€μ΄, ν΄λΌμ΄μΈνΈκ° μλ²μ 리μμ€μ μ λ°μ΄νΈλ₯Ό μμ²νκ³ , μλ²λ 리μμ€κ° μ λ°μ΄νΈλμμμ νμΈνκ³ μΆκ° λ°μ΄ν°λ₯Ό λ°ννμ§ μλ κ²½μ°μ μ¬μ©λλ€. ν΄λΌμ΄μΈνΈλ λ¨μν μμ²μ μ±κ³΅μ νμΈνκ³ μΆκ° μ 보λ₯Ό λ°μ νμκ° μμ λ μ μ©νλ€.
DELETE μμ²μ μ±κ³΅: ν΄λΌμ΄μΈνΈκ° DELETE μμ²μ 보λ΄μ΄ 리μμ€λ₯Ό μμ νκ³ , 리μμ€κ° μ±κ³΅μ μΌλ‘ μμ λ κ²½μ°μ 204 μν μ½λλ₯Ό μ¬μ©νλ€. μμ νμ μμ λ 리μμ€μ λν μΆκ° μ 보λ₯Ό λ°νν νμκ° μλ κ²½μ°μ μ¬μ©νλ€.
PUT λλ PATCH μμ²μ μ±κ³΅: ν΄λΌμ΄μΈνΈκ° μλ²μ 리μμ€λ₯Ό μ λ°μ΄νΈνλ PUT λλ PATCH μμ²μ 보λ΄κ³ , μ λ°μ΄νΈκ° μ±κ³΅μ μΌλ‘ μλ£λμμ λ 204λ₯Ό μ¬μ©ν μ μλ€. μ λ°μ΄νΈ μμ μμ²΄κ° μ±κ³΅μ΄λ©° μΆκ° λ°μ΄ν°κ° νμνμ§ μμ λ μ μ©νλ€.
HEAD μμ²: HEAD μμ²μ GET μμ²κ³Ό μ μ¬νμ§λ§ μλ΅μ λ³Έλ¬Έμ΄ μλ κ²½μ°μ μ¬μ©λλ€. λ°λΌμ 204 No Content μν μ½λκ° μ¬μ©λ μ μλ€.
HTTP μν μ½λ 204λ μμ²μ μ±κ³΅μ λνλ΄κ³ , μΆκ° μ 보λ λ°μ΄ν°κ° νμνμ§ μμ λ μ¬μ©λλ€. ν΄λΌμ΄μΈνΈκ° μμ²μ μ΄ν΄νκ³ μ²λ¦¬νμ§λ§ μλ΅ λ³Έλ¬Έμ κΈ°λνμ§ μμ λ μ¬μ©νλ κ²μ΄ μ’λ€.
π₯ νλ‘μ νΈμ μ μ©
νμ¬ μ¬μ©μμ μΉ΄ν 맀μ₯ μμ½ λ΄μμ μ‘°νν λ μμ½ λ΄μμ΄ μ‘΄μ¬νμ§ μλλ€λ©΄ Http Status Codeμ 204λ₯Ό λ΄μ μ μ‘νκ³ μλ€.
getNearestReserved method
CustomNoContentExceptionHandler
CustomNoContentExceptionHandler
μμλ λΆλͺ ResponseBodyλ₯Ό λ΄μμ μ μ‘νλλ‘ μ€μ λμ΄ μμ§λ§, μλ΅ κ²°κ³Όλ λ€μκ³Ό κ°λ€.{{server}}/api/home/reserve μμ²μ λν μλ΅
Response Bodyμ λͺ¨λ λ΄μ©μ΄ μμ λμ΄ μλ€. λ§μ½ νμ¬ Responseμ Http Status Codeκ° 204(
NO_CONTENT
)μΌ κ²½μ° SpringMVCμμ μλμΌλ‘ Bodyμ λ΄μ©μ μμ νκΈ° λλ¬Έμ΄λ€.λ°λΌμ μμ½ λ΄μμ΄ μ‘΄μ¬νμ§ μμλ Response Bodyκ° λλ½λμ§ μλλ‘ νκΈ° μν΄μλ Http Status Codeλ₯Ό 200(
OK
)μΌλ‘ μμ νλ κ²μ΄ μ¬λ°λ₯Έ μ¬μ©λ²μ΄μ§ μμκΉ μκ°νλ€.