[Web_3] Spring 5 ๐Ÿฑโ€๐Ÿ

08627ยท2022๋…„ 9์›” 20์ผ
1

Spring

๋ชฉ๋ก ๋ณด๊ธฐ
5/13
post-thumbnail

๐Ÿ“Œ ์š”์ฒญ(Request) ๋ฐ์ดํ„ฐ ๋ฐ›์•„์˜ค๊ธฐ


๐Ÿ’ก ์š”์ฒญ(Request) ๋ฐ์ดํ„ฐ ๋ฐ›์•„์˜ค๊ธฐ


๐Ÿ‘พ

โ–ซ๏ธ AddPostReqDto.java

@Data
public class AddPostReqDto {
    private String title;
    private String writer;
    private String content;
    
    private MultipartFile file;
    private List<MultipartFile> files;
}

Request DTO ... @Getter
Ajax๋ฅผ ํ†ตํ•ด JSON ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๋ฉด, ์Šคํ”„๋ง์ด DTO ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๊ฐ€์ ธ์˜ค๋„๋ก ํ•œ๋‹ค.
์ด ๋•Œ ์Šคํ”„๋ง์—์„œ Json์„ DTO ๊ฐ์ฒด๋กœ ๋งŒ๋“ค์–ด์ฃผ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” Jackson ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ Getter๋กœ Json Key ๊ฐ’์„ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— DTO ํด๋ž˜์Šค์—๋Š” @Getter ๊ฐ€ ๊ผญ ํ•„์š”ํ•˜๋‹ค.

โ–ซ๏ธ RequestTestController.java

@Slf4j
@RestController
public class RequestTestController {

    @PostMapping("/api/v1/rp/post") // โญ ๊ฐ์ฒด๋กœ ๋ฐ›๊ธฐ
    public ResponseEntity<?> addPost(@RequestParam String title,
                                     @RequestParam String writer,
                                     @RequestParam String content) {

        Map<String, Object> map = new HashMap<String, Object>(); 
        map.put("title", title);
        map.put("writer", writer);
        map.put("content", content);

        return ResponseEntity.ok(new CMRespDto<>(1, "๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ ์™„๋ฃŒ", map));
    }
    
    @PostMapping("/api/v1/dto/post") // โญ DTO๋กœ ๋ฐ›๊ธฐ
    public ResponseEntity<?> addPost(AddPostReqDto addPostReqDto) {

        log.info("{}", addPostReqDto);

        return ResponseEntity.ok(new CMRespDto<>(1, "๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ ์™„๋ฃŒ", addPostReqDto));
    }

    @PostMapping("/api/v1/file/post") // โญ ํŒŒ์ผ(๋ช…) ๋ฐ›๊ธฐ โžก๏ธ formData ํ˜•ํƒœ๋กœ ๋ณด๋‚ด์•ผ ํ•จ. 
    public ResponseEntity<?> addPost2(AddPostReqDto addPostReqDto) {

        log.info("{}", addPostReqDto);
        List<String> fileNames = new ArrayList<String>();

        String fileName1 = addPostReqDto.getFile().getOriginalFilename();
        fileNames.add(fileName1);

        if(addPostReqDto.getFiles() != null){
            String fileName2 = addPostReqDto.getFiles().get(0).getOriginalFilename();
            String fileName3 = addPostReqDto.getFiles().get(1).getOriginalFilename();
            ...
            fileNames.add(fileName2);
            fileNames.add(fileName3);
            ...
        }

        return ResponseEntity.ok(new CMRespDto<>(1, "๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ ์™„๋ฃŒ", fileNames));
    }

    @PostMapping("/api/v1/json/post") // โญ JSON์œผ๋กœ ๋ฐ›๊ธฐ โžก๏ธ @RequestBody ๋ฅผ ๊ผญ ๋‹ฌ์•„์•ผ ํ•จ.
    public ResponseEntity<?> addPost3(@RequestBody AddPostReqDto addPostReqDto) {

        log.info("{}", addPostReqDto);

        return ResponseEntity.ok(new CMRespDto<>(1, "Json์œผ๋กœ ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ ์™„๋ฃŒ", addPostReqDto));
    }
}

ํด๋ผ์ด์–ธํŠธ์—์„œ ์š”์ฒญ๋ฐ”๋””์— JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„ ๋ณด๋‚ด๋ฉด @RequestBody ์–ด๋…ธํ…Œ์ด์…˜์ด ํ•ด๋‹น ์š”์ฒญ๋ฐ”๋””์— ๋‹ด๊ธด ๊ฐ’์„ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜์‹œ์ผœ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์œผ๋กœ ๋ฐ›์•„์คŒ.

โž• JSON ์ •๋ณด๊ฐ€ @RequestBody ์–ด๋…ธํ…Œ์ด์…˜์ด ๋ถ™์€ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋ณด๋‚ด์ง€๋ฉด, Map ์œผ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜์— Json ์ž๋ฃŒํ˜•์„ ๋ฐ”๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“ข ์†Œ๊ฐ ๐Ÿฑโ€๐Ÿ

0๊ฐœ์˜ ๋Œ“๊ธ€