๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Spring Boot

[Spring Boot] ResponseEntity๋ž€?GlobalResponse ์ •๋ฆฌ

by ์šฐ์ฃผ๋ฌผ๊ณ ๊ธฐ 2025. 5. 3.
๋ฐ˜์‘ํ˜•

ํ•œ๋งˆ๋””๋กœ

 

์„œ๋ฒ„ -> ํด๋ผ์ด์–ธํŠธ ๋กœ ์‘๋‹ตํ•  ๋•Œ

์‘๋‹ต์„ ๋‹ด์•„์„œ ๋ณด๋‚ด๋Š” ์ƒ์ž

โ€‹

๊ทผ๋ฐ ์‘๋‹ต์œผ๋กœ ๋ญ˜ ๋‹ด๋ƒ๋ฉด,

โ€‹

๋ฐ์ดํ„ฐ, ์ƒํƒœ์ฝ”๋“œ, ํ—ค๋” ์ด๋Ÿฐ๊ฑธ ๋„ฃ์–ด์„œ ๋ณด๋ƒ„

 

 

return ResponseEntity.status(HttpStatus.CREATED).body("ํšŒ์›๊ฐ€์ž… ์„ฑ๊ณต!");

 

๋Œ€ํ‘œ์ ์œผ๋กœ ์ด์ •๋„ ์žˆ์Œ

 

 


์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๋ฌธ์ œ์ ์ด ์ƒ๊น€

์ฝ”๋“œ๋ฅผ ์งœ๋Š” ์‚ฌ๋žŒ๋งˆ๋‹ค ์‘๋‹ต์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Œ.

๋”ฐ๋ผ์„œ ๋ณดํ†ต GlobalResponse๋กœ ์‘๋‹ตํ˜•์‹ ํ†ต์ผํ•ด์„œ ํ”„๋ก ํŠธํ•œํ…Œ ๋˜์ ธ์คŒ

โ€‹

๊ทธ๋Ÿผ ํ”„๋ก ํŠธ๋ž‘ ํ˜‘์—…ํ• ๋•Œ ํ”„๋ก ํŠธ๊ฐ€ ์ข€ ๋” ํŽธํ•˜๊ฒŒ ์ž‘์—… ๊ฐ€๋Šฅ

โ€‹

โ€‹

GlabalResponse๋Š” ๋ณดํ†ต ์•„๋ž˜์™€๊ฐ™์ด ๊ตฌ์„ฑ๋จ

public class GlobalResponse<T> {
    private int code;          // ์ƒํƒœ ์ฝ”๋“œ
    private String message;    // ๋ฉ”์‹œ์ง€
    private T data;            // ์‹ค์ œ ์‘๋‹ต ๋ฐ์ดํ„ฐ

    // ์ƒ์„ฑ์ž + static factory method ์ž์ฃผ ์”€
    public static <T> GlobalResponse<T> of(int code, String message, T data) {
        GlobalResponse<T> res = new GlobalResponse<>();
        res.code = code;
        res.message = message;
        res.data = data;
        return res;
    }

    public static <T> GlobalResponse<T> success(T data) {
        return of(200, "์„ฑ๊ณต", data);
    }

    public static GlobalResponse<Void> fail(String message) {
        return of(400, message, null);
    }

}

๋”ฐ๋ผ์„œ GlobalResponse๊นŒ์ง€ ์จ์„œ ์‹ค์ œ๋กœ ์“ด๋‹ค๋ฉด

 

@GetMapping("/article/{id}")
public ResponseEntity<GlobalResponse<Article>> getArticle(@PathVariable Long id) {
    Article article = articleService.findById(id);
    return ResponseEntity.ok(GlobalResponse.success(article));
}

 

์ด๋Ÿฐ ๋А๋‚Œ์ž„

โ€‹

โ€‹

์ด๋ ‡๊ฒŒ ์„œ๋ฒ„์—์„œ ๋˜์ง€๋ฉด ํ”„๋ก ํŠธ๋Š” ์–ด๋–ป๊ฒŒ ๋ฐ›๋ƒ๋ฉด

 

{
  "code": 200,
  "message": "์„ฑ๊ณต",
  "data": {
    "id": 1,
    "title": "hello",
    "content": "world"
  }
}

์š”๋ ‡๊ฒŒ json์œผ๋กœ ๋ฐ›์Œ

โ€‹

 

๋ฐ˜์‘ํ˜•