diff --git a/src/main/java/com/clonecode/inssagram/controller/PostController.java b/src/main/java/com/clonecode/inssagram/controller/PostController.java index 2222fc2..a646531 100644 --- a/src/main/java/com/clonecode/inssagram/controller/PostController.java +++ b/src/main/java/com/clonecode/inssagram/controller/PostController.java @@ -10,15 +10,18 @@ import com.clonecode.inssagram.global.error.ErrorCode; import com.clonecode.inssagram.jwt.TokenProvider; import com.clonecode.inssagram.service.PostService; +import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.List; +@Api(tags = {"게시물 API Controller"}) @RestController @RequestMapping("/api/posts") @RequiredArgsConstructor @@ -27,10 +30,10 @@ public class PostController { private final TokenProvider tokenProvider; @ApiOperation(value = "게시물 작성", notes = "게시물 작성 기능", response = PostCreateResponseDto.class) - @PostMapping() + @PostMapping(consumes = {MediaType.APPLICATION_JSON_VALUE, MediaType.MULTIPART_FORM_DATA_VALUE}) public ResponseEntity createPost( - PostRequestDto requestDto, - List imageFileList) { + @RequestPart PostRequestDto requestDto, + @RequestPart List imageFileList) { User user = tokenProvider.getUserFromAuthentication(); if (imageFileList == null) { diff --git a/src/main/java/com/clonecode/inssagram/domain/Image.java b/src/main/java/com/clonecode/inssagram/domain/Image.java index ce0bcee..82569b6 100644 --- a/src/main/java/com/clonecode/inssagram/domain/Image.java +++ b/src/main/java/com/clonecode/inssagram/domain/Image.java @@ -15,7 +15,7 @@ public class Image { private Long id; @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn (name = "postId") + @JoinColumn (name = "postId", nullable = false) private Post post; @NotNull diff --git a/src/main/java/com/clonecode/inssagram/dto/response/PostAllResponseDto.java b/src/main/java/com/clonecode/inssagram/dto/response/PostAllResponseDto.java index 6a53cd1..6118a8b 100644 --- a/src/main/java/com/clonecode/inssagram/dto/response/PostAllResponseDto.java +++ b/src/main/java/com/clonecode/inssagram/dto/response/PostAllResponseDto.java @@ -3,6 +3,7 @@ import com.clonecode.inssagram.domain.Image; import com.clonecode.inssagram.domain.Post; import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; import lombok.Builder; import lombok.Getter; @@ -12,13 +13,23 @@ @Getter public class PostAllResponseDto { + @ApiModelProperty(example = "게시물 DB Id") private Long postId; + @ApiModelProperty(example = "게시물 작성자 정보") private UserProfileResponseDto user; + @ApiModelProperty(example = "게시물 글 내용") private String postContents; + @ApiModelProperty(example = "게시물 사진 URL") private List imageUrlList; + @ApiModelProperty(example = "게시물 하트 수") private Long heartNum; + @ApiModelProperty(example = "게시물 댓글 수") private Long commentNum; + @ApiModelProperty(example = "로그인한 사용자의 게시물 하트 여부") private Long isHeart; + @ApiModelProperty(example = "게시물 댓글 목록") + private List commentList; + @ApiModelProperty(example = "게시물 생성일자") @JsonFormat(pattern = "yyyy-MM-dd HH:mm") private LocalDateTime createdAt; @@ -28,6 +39,7 @@ public PostAllResponseDto(Post post, Long heartNum, Long commentNum, Long isHear this.user = new UserProfileResponseDto(post.getUser()); this.postContents = post.getPostContents(); this.imageUrlList = post.getImageList().stream().map(Image::getImageUrl).collect(Collectors.toList()); + this.commentList = post.getCommentList().stream().map(CommentResponseDto::new).limit(2).collect(Collectors.toList()); this.createdAt = post.getCreatedAt(); this.heartNum = heartNum; this.commentNum = commentNum; diff --git a/src/main/java/com/clonecode/inssagram/dto/response/PostCreateResponseDto.java b/src/main/java/com/clonecode/inssagram/dto/response/PostCreateResponseDto.java index 72e5d56..8aebc5c 100644 --- a/src/main/java/com/clonecode/inssagram/dto/response/PostCreateResponseDto.java +++ b/src/main/java/com/clonecode/inssagram/dto/response/PostCreateResponseDto.java @@ -10,13 +10,13 @@ @Getter public class PostCreateResponseDto { - @ApiModelProperty(example = "게시물 Id") + @ApiModelProperty(example = "게시물 DB Id") @NotBlank private Long postId; - @ApiModelProperty(example = "사진 url") + @ApiModelProperty(example = "게시물 사진 URL") @NotBlank private String imageUrl; - @ApiModelProperty(example = "게시물 좋아요 수") + @ApiModelProperty(example = "게시물 하트 수") @NotBlank private Long heartNum; @ApiModelProperty(example = "게시물 댓글 수") diff --git a/src/main/java/com/clonecode/inssagram/dto/response/PostDetailResponseDto.java b/src/main/java/com/clonecode/inssagram/dto/response/PostDetailResponseDto.java index 3d99919..3735343 100644 --- a/src/main/java/com/clonecode/inssagram/dto/response/PostDetailResponseDto.java +++ b/src/main/java/com/clonecode/inssagram/dto/response/PostDetailResponseDto.java @@ -3,6 +3,7 @@ import com.clonecode.inssagram.domain.Image; import com.clonecode.inssagram.domain.Post; import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; import lombok.Builder; import lombok.Getter; @@ -12,16 +13,24 @@ @Getter public class PostDetailResponseDto { + @ApiModelProperty(example = "게시물 DB Id") private Long postId; + @ApiModelProperty(example = "게시물 작성자 정보") private UserProfileResponseDto user; + @ApiModelProperty(example = "게시물 글 내용") private String postContents; + @ApiModelProperty(example = "게시물 사진 URL") private List imageUrlList; + @ApiModelProperty(example = "게시물 하트 수") private Long heartNum; + @ApiModelProperty(example = "게시물 댓글 수") private Long commentNum; + @ApiModelProperty(example = "로그인한 사용자의 게시물 하트 여부") private Long isHeart; + @ApiModelProperty(example = "게시물 생성일자") @JsonFormat(pattern = "yyyy-MM-dd HH:mm") private LocalDateTime createdAt; - + @ApiModelProperty(example = "게시물 댓글 목록") private List commentList; @Builder diff --git a/src/main/java/com/clonecode/inssagram/dto/response/PostUpdateResponseDto.java b/src/main/java/com/clonecode/inssagram/dto/response/PostUpdateResponseDto.java index e25d7a8..64e7f21 100644 --- a/src/main/java/com/clonecode/inssagram/dto/response/PostUpdateResponseDto.java +++ b/src/main/java/com/clonecode/inssagram/dto/response/PostUpdateResponseDto.java @@ -1,10 +1,12 @@ package com.clonecode.inssagram.dto.response; import com.clonecode.inssagram.domain.Post; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @Getter public class PostUpdateResponseDto { + @ApiModelProperty(example = "게시물 글 내용") private String postContents; public PostUpdateResponseDto(Post post){ diff --git a/src/main/java/com/clonecode/inssagram/dto/response/UserProfileResponseDto.java b/src/main/java/com/clonecode/inssagram/dto/response/UserProfileResponseDto.java index 95b8050..49123d5 100644 --- a/src/main/java/com/clonecode/inssagram/dto/response/UserProfileResponseDto.java +++ b/src/main/java/com/clonecode/inssagram/dto/response/UserProfileResponseDto.java @@ -1,12 +1,16 @@ package com.clonecode.inssagram.dto.response; import com.clonecode.inssagram.domain.User; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @Getter public class UserProfileResponseDto { + @ApiModelProperty(example = "사용자 DB Id") private Long userId; + @ApiModelProperty(example = "사용자 이름(별명)") private String username; + @ApiModelProperty(example = "사용자 프로필 사진 URL") private String profileImageUrl;