Skip to content

Latest commit

ย 

History

History
65 lines (48 loc) ยท 2.35 KB

code.md

File metadata and controls

65 lines (48 loc) ยท 2.35 KB

์ฝ”๋“œ ์ž‘์„ฑ ์ปจ๋ฒค์…˜

์˜ˆ์™ธยท์‘๋‹ต์„ ์ฝ”๋“œ๋กœ ์˜ฎ๊ธธ ๋•Œ์˜ ํšก๋‹จ ๊ทœ์น™ + Swagger ์ž‘์„ฑ ๊ฐ€์ด๋“œ. ๊ด€๋ จ: ์—๋Ÿฌ์ฝ”๋“œ/์˜ˆ์™ธ exception.md, ์„ฑ๊ณต ์‘๋‹ต response.md.

1. ํšก๋‹จ ๊ทœ์น™

๊ฐœ๋ณ„ Exception ํด๋ž˜์Šค ์‹ ๊ทœ ์ƒ์„ฑ ๊ธˆ์ง€

๋„๋ฉ”์ธ๋งˆ๋‹ค ์˜ˆ์™ธ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์ง€ ๋ง๊ณ  ๊ณตํ†ต ์˜ˆ์™ธ ํƒ€์ž…(exception.md)์— XxxErrorCode๋ฅผ ๋„˜๊ธด๋‹ค.

// Good
throw new NotFoundException(ChartOptionErrorCode.CHART_OPTION_NOT_FOUND);

// Bad โ€” ๊ฐœ๋ณ„ ํด๋ž˜์Šค ๋งŒ๋“ค์ง€ ๋ง ๊ฒƒ
throw new ChartOptionNotFoundException();

ResponseCode / ResponseMessage ์ž‘์„ฑ ๊ทœ์น™

  • ๊ฐ ๋„๋ฉ”์ธ presentation/api/์— XxxResponseCode(์ฝ”๋“œ ์ƒ์ˆ˜) + XxxResponseMessage(๋ฉ”์‹œ์ง€ ์ƒ์ˆ˜) ๋‘ ํด๋ž˜์Šค๋ฅผ ๋‘”๋‹ค.
  • ์ƒ์ˆ˜๋ช…์€ ๋™์‚ฌ ์—†์ด ํ–‰์œ„/์ƒํƒœ ๊ฒฐ๊ณผ๋กœ ํ‘œํ˜„: OK, SAVED, CREATED ๋“ฑ.
  • ์ฝ”๋“œ ๋ฌธ์ž์—ด ํฌ๋งท: {์ ‘๋‘์–ด}-{HTTP์ƒํƒœ} (ํ˜„ ์ฝ”๋“œ ๊ธฐ์ค€ โ€” ์˜ˆ: CHO-200, CHO-201).
  • ์ƒ์„ฑ์ž private โ€” ์ธ์Šคํ„ด์Šคํ™” ๊ธˆ์ง€.
public class ChartOptionResponseCode {
    private ChartOptionResponseCode() {}

    public static final String OK      = "CHO-200";
    public static final String SAVED   = "CHO-200";
    public static final String CREATED = "CHO-201";
}

public class ChartOptionResponseMessage {
    private ChartOptionResponseMessage() {}

    public static final String OK      = "์ฐจํŠธ ์˜ต์…˜ ์กฐํšŒ ์„ฑ๊ณต";
    public static final String SAVED   = "์ฐจํŠธ ์˜ต์…˜ ์ €์žฅ ์„ฑ๊ณต";
    public static final String CREATED = "์ฐจํŠธ ์˜ต์…˜ ์ƒ์„ฑ ์„ฑ๊ณต";
}

2. Swagger ์ž‘์„ฑ ๊ฐ€์ด๋“œ

์˜์กด์„ฑ: springdoc-openapi-starter-webmvc-ui:2.8.6 Swagger UI: http://localhost:8080/swagger-ui/index.html

์ƒˆ ์—”๋“œํฌ์ธํŠธ ์ž‘์„ฑ ์˜ˆ์‹œ

@Operation(summary = "ํ”„๋กœ์ ํŠธ ์ฐจํŠธ ์˜ต์…˜ ์กฐํšŒ")
@ApiResponses({
    @ApiResponse(responseCode = "200", description = "์กฐํšŒ ์„ฑ๊ณต"),
    @ApiResponse(responseCode = "404", description = "CHO-001: ์ฐจํŠธ ์˜ต์…˜์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ")
})
@GetMapping
public ResponseEntity<ApiResponse<?>> getChartOption(@PathVariable Long projectId) { ... }

๊ทœ์น™

  • ๊ณตํ†ต ์—๋Ÿฌ(401, 403, 500)๋Š” ์ƒ๋žต ๊ฐ€๋Šฅ โ€” GlobalExceptionHandler์—์„œ ์ž๋™ ์ฒ˜๋ฆฌ
  • ๋„๋ฉ”์ธ๋ณ„ ์—๋Ÿฌ๋งŒ @ApiResponse๋กœ ๋ช…์‹œ
  • description์— ์—๋Ÿฌ์ฝ”๋“œ ํฌํ•จ: "CHO-001: ์ฐจํŠธ ์˜ต์…˜์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ"