Skip to content

Commit 00d5d0e

Browse files
committed
refactor: file 을 받기 위해서 @RequestPart 적용 - user
1 parent d7ec9f7 commit 00d5d0e

File tree

3 files changed

+43
-14
lines changed

3 files changed

+43
-14
lines changed

codeit-bootcamp-spring/1-sprint-mission/src/main/java/com/sprint/mission/discodeit/controller/BinaryContent/BinaryContentController.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ public ResponseEntity<BinaryContent> findById(@PathVariable UUID binaryContentId
2828

2929
@RequestMapping(method = RequestMethod.POST)
3030
public ResponseEntity<List<BinaryContent>> findAll(
31-
@RequestBody List<UUID> uuids
31+
@RequestBody List<UUID> binaryIds
3232
) {
33-
return ResponseEntity.ok(binaryContentService.findAllByIdIn(uuids));
33+
return ResponseEntity.ok(binaryContentService.findAllByIdIn(binaryIds));
3434
}
3535
}

codeit-bootcamp-spring/1-sprint-mission/src/main/java/com/sprint/mission/discodeit/controller/message/MessageController.java

+21-8
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@
55
import com.sprint.mission.discodeit.dto.request.MessageUpdateRequest;
66
import com.sprint.mission.discodeit.entity.Message;
77
import com.sprint.mission.discodeit.service.MessageService;
8+
import java.io.IOException;
89
import java.net.URI;
9-
import java.util.ArrayList;
1010
import java.util.List;
11-
import java.util.Objects;
1211
import java.util.UUID;
1312
import org.springframework.http.MediaType;
1413
import org.springframework.http.ResponseEntity;
@@ -18,6 +17,7 @@
1817
import org.springframework.web.bind.annotation.RequestMethod;
1918
import org.springframework.web.bind.annotation.RequestPart;
2019
import org.springframework.web.bind.annotation.RestController;
20+
import org.springframework.web.multipart.MultipartFile;
2121

2222
@RestController
2323
@RequestMapping("/api/message")
@@ -36,15 +36,28 @@ public ResponseEntity<List<Message>> findByAllChannel(
3636
return ResponseEntity.ok(messageService.findAllByChannelId(channelId));
3737
}
3838

39-
@RequestMapping(method = RequestMethod.POST, consumes = {MediaType.APPLICATION_JSON_VALUE, MediaType.MULTIPART_FORM_DATA_VALUE})
39+
@RequestMapping(
40+
method = RequestMethod.POST, consumes = {MediaType.APPLICATION_JSON_VALUE,
41+
MediaType.MULTIPART_FORM_DATA_VALUE}
42+
)
4043
public ResponseEntity<Void> createMessage(
4144
@RequestPart(name = "messageCreateRequest") MessageCreateRequest messageCreateRequest,
42-
@RequestPart(required = false, name = "binaryContentCreateRequest") List<BinaryContentCreateRequest> binaryContentCreateRequest
45+
@RequestPart(required = false, name = "binaryContentCreateRequest") List<MultipartFile> binaryContentCreateRequest
4346
) {
44-
if (Objects.isNull(binaryContentCreateRequest)) {
45-
binaryContentCreateRequest = new ArrayList<>();
46-
}
47-
messageService.create(messageCreateRequest, binaryContentCreateRequest);
47+
List<BinaryContentCreateRequest> binaryContents = binaryContentCreateRequest.stream()
48+
.map(file -> {
49+
try {
50+
return new BinaryContentCreateRequest(
51+
file.getOriginalFilename(),
52+
file.getContentType(),
53+
file.getBytes()
54+
);
55+
} catch (IOException e) {
56+
throw new RuntimeException(e);
57+
}
58+
})
59+
.toList();
60+
messageService.create(messageCreateRequest, binaryContents);
4861
return ResponseEntity.created(URI.create("/")).build();
4962
}
5063

codeit-bootcamp-spring/1-sprint-mission/src/main/java/com/sprint/mission/discodeit/controller/user/UserController.java

+20-4
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,21 @@
55
import com.sprint.mission.discodeit.dto.request.UserCreateRequest;
66
import com.sprint.mission.discodeit.dto.request.UserUpdateRequest;
77
import com.sprint.mission.discodeit.service.UserService;
8+
import java.io.IOException;
89
import java.net.URI;
910
import java.util.List;
11+
import java.util.Objects;
1012
import java.util.Optional;
1113
import java.util.UUID;
14+
import org.springframework.http.MediaType;
1215
import org.springframework.http.ResponseEntity;
1316
import org.springframework.web.bind.annotation.PathVariable;
1417
import org.springframework.web.bind.annotation.RequestBody;
1518
import org.springframework.web.bind.annotation.RequestMapping;
1619
import org.springframework.web.bind.annotation.RequestMethod;
20+
import org.springframework.web.bind.annotation.RequestPart;
1721
import org.springframework.web.bind.annotation.RestController;
22+
import org.springframework.web.multipart.MultipartFile;
1823

1924
@RestController
2025
@RequestMapping("/api/user")
@@ -26,12 +31,23 @@ public UserController(UserService userService) {
2631
this.userService = userService;
2732
}
2833

29-
@RequestMapping(method = RequestMethod.POST)
34+
@RequestMapping(method = RequestMethod.POST, consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
3035
public ResponseEntity<Void> createUser(
31-
@RequestBody UserCreateRequest userCreateRequest,
32-
@RequestBody(required = false) BinaryContentCreateRequest binaryContentCreateRequest
36+
@RequestPart(name = "user-create-request") UserCreateRequest userCreateRequest,
37+
@RequestPart(name = "binary-content-create-request", required = false) MultipartFile binaryContentCreateRequest
3338
) {
34-
userService.create(userCreateRequest, Optional.ofNullable(binaryContentCreateRequest));
39+
BinaryContentCreateRequest binaryContent = null;
40+
if (Objects.nonNull(binaryContentCreateRequest)) {
41+
try {
42+
binaryContent = new BinaryContentCreateRequest(
43+
binaryContentCreateRequest.getOriginalFilename(),
44+
binaryContentCreateRequest.getContentType(),
45+
binaryContentCreateRequest.getBytes());
46+
} catch (IOException exception) {
47+
throw new IllegalArgumentException(exception);
48+
}
49+
}
50+
userService.create(userCreateRequest, Optional.ofNullable(binaryContent));
3551
return ResponseEntity.created(URI.create("/")).build();
3652
}
3753

0 commit comments

Comments
 (0)