😎 어노테이션에 대한 자세한 설명은 [CowAPI] User 코드 리뷰 에서 확인할 수 있습니다.
😎 Notice는 Springboot security를 공부하는 것이 목적인 기능입니다. 그리고 이전의 블로그에서 설명했기 때문에 자세한 설명은 넘어가겠습니다.
@RestController
@RequiredArgsConstructor
public class QnAController {
private final QnAService qnAService;
@PostMapping("/notices/notice")
public NoticeDto createNotice(@RequestHeader("Authorization") String userToken, @RequestBody NoticeDto noticeDto) {
return noticeService.createNotice(userToken, noticeDto);
}
@GetMapping("/notices/notice")
public NoticeDto readNotice(@RequestHeader("Authorization") String userToken, @RequestParam("noticeId") Long noticeId) {
return noticeService.readNotice(userToken, noticeId);
}
@PutMapping("/notices/notice")
public NoticeDto updateNotice(@RequestHeader("Authorization") String userToken, @RequestBody NoticeDto noticeDto) {
return noticeService.updateNotice(userToken, noticeDto);
}
@DeleteMapping("/notices/notice")
public NoticeDto deleteNotice(@RequestHeader("Authorization") String userToken, @RequestParam("noticeId") Long noticeId) {
return noticeService.deleteNotice(userToken, noticeId, "API");
}
}
😎 API 문서 : Swagger
😎 공지 생성, 조회, 수정, 삭제는 Jwt 토큰을 받습니다.
@Service
@RequiredArgsConstructor
@Transactional
public class NoticeService {
private final NoticeRepository noticeRepository;
private final UserRepository userRepository;
public NoticeDto createNotice(String userToken, NoticeDto noticeDto) { ... }
public NoticeDto readNotice(String userToken, Long noticeId) {... }
public NoticeDto updateNotice(String userToken, NoticeDto noticeDto) {... }
public NoticeDto deleteNotice(String userToken, Long noticeId, String updater) {... }
}
😎 JWT 토큰 인증 및 인가 코드 수정하고 있습니다.
😎 각각의 기능에 따른 필요한 로직을 수행합니다.
@Entity
@DynamicUpdate
public class Notice {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
...
@ManyToOne
@JoinColumn(name = "User_email")
private User user;
}
@Repository
public interface NoticeRepository extends JpaRepository<Notice, Long> {
default void updateNotice(Notice notice, NoticeDto noticeDto) { ... }
default void deleteNotice(Notice notice, String updater) { ... }
}