REST API Community Project
π 2022λ 11μ 8μΌ ~ νμ¬κΉμ§ μ λ°μ΄νΈ μ€
- κ°μΈ νλ‘μ νΈ
- κ²μλ¬Όμ λ±λ‘/μμ /μμ κ°λ₯
- μΉ΄ν κ³ λ¦¬λ₯Ό νμ© κ°λ₯
- λκΈ/λλκΈ νμ© κ°λ₯
- 첨λΆνμΌμ λ±λ‘/μμ /μμ κ°λ₯
- μ’μμ, μ¦κ²¨μ°ΎκΈ° νμ© κ°λ₯
- μ¬μ©μ μμ μ μ 보 κ΄λ¦¬κ°λ₯
- λ©μΈμ§ λ±λ‘/μμ /μμ κ°λ₯
- λ°μ λ©μΈμ§, λ³΄λΈ λ©μΈμ§ κ΄λ¦¬ κ°λ₯
- μ¬μ©μ, κ²μλ¬Όμ μ κ³ κ°λ₯
- μ κ³ λ μ¬μ©μ, κ²μλ¬Όμ κ΄λ¦¬ κ°λ₯
- μΉ΄ν κ³ λ¦¬ κ΄λ¦¬ κ°λ₯
community
βββ advice
βββ config
β βββ auth
β βββ constant
β βββ jwt
β βββ redis
β βββ security
βββ controller
βββ dto
βββ entity
βββ exceptions
β βββ type
βββ repository
βββ response
βββ service
-
advice
-
config
-
controller
-
dto
-
entity
-
exceptions
-
repository
-
response
-
service
- νμκ°μ
(POST /sign-up)
- λ‘κ·ΈμΈ
(POST /sign-in)
- ν ν° μ¬λ°κΈ
(POST /reissue)
- κ²μλ¬Ό μμ±
(POST /boards)
- μ 체 κ²μλ¬Ό μ‘°ν
(GET /boards/all/{categoryid})
- λ¨κ±΄ κ²μλ¬Ό μ‘°ν
(GET /boards/{id})
- κ²μλ¬Ό μμ
(PUT /boards/{id})
- κ²μλ¬Ό μμ
(DELETE /boards/{id})
- κ²μλ¬Ό κ²μ
(GET /boards/search?page={})
- κ²μλ¬Ό μ’μμ/μ·¨μ
(POST /boards/{id})
- κ²μλ¬Ό μ¦κ²¨μ°ΎκΈ°/μ·¨μ
(POST /boards/{id}/favorites)
- μΆμ²κΈ μ‘°ν
(GET /boards/best)
- μ 체 νμ μ‘°ν
(GET /members)
- κ°μΈ νμ μ‘°ν
(GET /members/{id})
- νμ μ 보 μμ
(PUT /members)
- μ 체 νμ μμ
(DELETE /members)
- λκΈ μμ±
(POST /comments)
- λκΈ μ‘°ν
(GET /comments)
- λκΈ μμ
(DELETE /comments/{id})
- λ©μΈμ§ μμ±
(POST /messages)
- λ°μ λ©μΈμ§ μ λΆ νμΈ
(GET /messages/receiver)
- λ°μ λ©μΈμ§ λ¨κ±΄ νμΈ
(GET /messages/receiver/{id})
- λ³΄λΈ λ©μΈμ§ μ λΆ νμΈ
(GET /messages/sender)
- λ³΄λΈ λ©μΈμ§ λ¨κ±΄ νμΈ
(GET /messages/sender/{id})
- λ°μ λ©μΈμ§ μμ
(DELETE /messages/receiver/{id})
- λ³΄λΈ λ©μΈμ§ μμ
(DELETE /messages/sender/{id})
- μΉ΄ν
κ³ λ¦¬ μμ±
(POST /categoryies)
- μΉ΄ν
κ³ λ¦¬ μ‘°ν
(GET /categoryies)
- μΉ΄ν
κ³ λ¦¬ μμ
(DELETE /categoryies/{id})
- μ μ μ κ³
(POST /reports/users)
- κ²μλ¬Ό μ κ³
(POST /reports/boards)
- μ μ§ μ μ κ΄λ¦¬
(GET /admin/manages/members)
- μ κ³ λ μ μ μ μ§ ν΄μ
(POST /admin/manages/members/{id})
- κ²μλ¬Ό κ΄λ¦¬
(GET /admin/manages/boards)
- μ κ³ λ κ²μλ¬Ό κ΄λ¦¬
(POST /admin/manages/boards/{id})
-
κΈ°μ‘΄μλ Securityλ₯Ό Serviceμ μμ‘΄ν΄μ μ²λ¦¬νλ λ°©μμΌλ‘ νμ§λ§ Serviceλ λλ©μΈμ λν λΉμ§λμ€ λ‘μ§μ΄ λ€μ΄κ°μ Securityλ₯Ό μμ‘΄νλ건 μ’μ§ μλ€κ³ μκ°νμμ΅λλ€.
-
μ¬μ μ 미리 μΈμ¦λ‘μ§μ μννλ©΄ μ‘°κΈ λ λΉ λ₯΄κ² μΈμ¦ μ€ν¨ μλ¬λ₯Ό λ΄λ €μ€ μ μλ€ μκ°νκ² λμμ΅λλ€. Controllerμμ μΈμ¦μ νμν μ 보λ₯Ό κ°μ§κ³ , μλΉμ€ λ©μλ νλΌλ―Έν°λ‘ μ λ¬ν΄μ€ κ²μ λλ€.
κΈ°μ‘΄ μ½λ
/**
* BoardController
*/
@PostMapping("/boards")
@ResponseStatus(HttpStatus.CREATED)
public Response createBoard(@Valid @ModelAttribute BoardCreateRequest req,
@RequestParam(value = "category", defaultValue = "1") int categoryId) {
return Response.success(boardService.createBoard(req, categoryId));
}
/**
* BoardService
*/
@Transactional
public BoardCreateResponse createBoard(BoardCreateRequest req, int categoryId) {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
Member meber = memberRepository.findByUsername(authentication.getName()).orElseThrow(MemberNotFoundException::new);
List<Image> images = req.getImages().stream().map(i -> new Image(i.getOriginalFilename())).collect(toList());
Category category = categoryRepository.findById(categoryId).orElseThrow(CategoryNotFoundException::new);
Board board = boardRepository.save(new Board(req.getTitle(), req.getContent(), user, category, images));
- λν μ΄λλ‘ λ¦¬ν©ν λ§μ νλ€λ³΄λ λ무 μ€μ²©λλ μ½λκ° μλ€κ°λ€ νλκ±° κ°μ μΈμ¦ & μΈκ° λ‘μ§μ λ°λ‘ λ©μλλ‘ λΆλ¦¬νμμ΅λλ€.
κ°μ λ μ½λ
/**
* BoardController
*/
@PostMapping("/boards")
@ResponseStatus(HttpStatus.CREATED)
public Response createBoard(@Valid @ModelAttribute BoardCreateRequest req,
@RequestParam(value = "category", defaultValue = "1") int categoryId) {
Member member = getPrincipal();
return Response.success(boardService.createBoard(req, categoryId, member));
}
private Member getPrincipal() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
Member member = memberRepository.findByUsername(authentication.getName())
.orElseThrow(MemberNotFoundException::new);
return member;
/**
* BoardService
*/
@Override
public BoardCreateResponse createBoard(BoardCreateRequest req, int categoryId, Member member) {
List<Image> images = req.getImages().stream().
map(i -> new Image(i.getOriginalFilename()))
.collect(toList());
Category category = categoryRepository.findById(categoryId).orElseThrow(CategoryNotFoundException::new);
Board board = boardRepository.save(new Board(req.getTitle(), req.getContent(), member, category, images));
uploadImages(board.getImages(), req.getImages());
return new BoardCreateResponse(board.getId(), board.getTitle(), board.getContent());
}