🎯 개요

프로젝트에 이미 구축된 보안 메타 어노테이션을 사용하여 API 엔드포인트의 접근 권한을 설정하는 방법입니다.


📋 사용 가능한 어노테이션

1. @PublicApi - 공개 접근

@PublicApi(reason = "구체적인 사유")

2. @AuthenticatedApi - 인증 필요

@AuthenticatedApi(reason = "구체적인 사유")

3. @AdminApi - 관리자 권한

@AdminApi(reason = "구체적인 사유")


💻 실제 사용법

컨트롤러에 적용

@RestController
@RequestMapping("/api/posts")
public class PostController {

    // 공개 API 예시
    @PublicApi(reason = "게시글 목록 조회는 누구나 가능합니다")
    @GetMapping
    public ApiTemplate<List<PostResponse>> getPosts() {
        // 구현 로직
    }

    @PublicApi(reason = "게시글 상세 조회는 누구나 가능합니다")
    @GetMapping("/{postId}")
    public ApiTemplate<PostResponse> getPost(@PathVariable Long postId) {
        // 구현 로직
    }

    // 인증 필요 API 예시
    @AuthenticatedApi(reason = "게시글 작성은 로그인한 사용자만 가능합니다")
    @PostMapping
    public ApiTemplate<PostResponse> createPost(@RequestBody PostRequest request) {
        // 구현 로직
    }

    @AuthenticatedApi(reason = "게시글 수정은 본인만 가능합니다")
    @PutMapping("/{postId}")
    public ApiTemplate<PostResponse> updatePost(@PathVariable Long postId, @RequestBody PostRequest request) {
        // 구현 로직
    }

    // 관리자 권한 API 예시
    @AdminApi(reason = "게시글 삭제는 관리자만 가능합니다")
    @DeleteMapping("/{postId}")
    public NoContent deletePost(@PathVariable Long postId) {
        // 구현 로직
    }
}