프로젝트에 이미 구축된 보안 메타 어노테이션을 사용하여 API 엔드포인트의 접근 권한을 설정하는 방법입니다.
@PublicApi(reason = "구체적인 사유")
@AuthenticatedApi(reason = "구체적인 사유")
@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) {
// 구현 로직
}
}