[Vue.js][Spring] Post Data ์ „์†ก ๊ฐ„ null๊ฐ’ ์ „์†ก ๋ฌธ์ œ

2022. 3. 25. 03:20ใ†๊ฐœ๋… ์ •๋ฆฌ ์ž‘์—…์‹ค/๋ฌธ์ œ ์ •๋ฆฌ

728x90
๋ฐ˜์‘ํ˜•

 

 

๐Ÿ‘ท‍โ™‚๏ธ ์ž‘์—… ์ค‘์ธ ๋‚ด์šฉ

์ฃผ๋‹ˆํ•˜๋ž‘์€ Spring๊ณผ Vue.js๋ฅผ ์ด์šฉํ•ด์„œ ํšŒ์› ๊ฐ€์ž… ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค๊ณ  ์žˆ๊ณ , ํ˜„์žฌ ์ค‘๋ณต ํ™•์ธ์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

 

    ๐Ÿ”ฝ Spring Boot(Maven - mybatis)

        ๐Ÿ“ฆ UserController.java

 

 

        ๐Ÿ“ฆ UserService.java

 

 

        ๐Ÿ“ฆ UserService.java

/**
 * ํšŒ์› ๊ฐ€์ž… ๊ด€๋ จ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง
 * <pre>
 * <b>History:</b>
 *    ์ฃผ๋‹ˆํ•˜๋ž‘, 1.0.0, 2022.03.24 ์ตœ์ดˆ ์ž‘์„ฑ
 * </pre>
 *
 * @author ์ฃผ๋‹ˆํ•˜๋ž‘
 * @version 1.0.0, 2022.03.24 ์ตœ์ดˆ ์ž‘์„ฑ
 * @See ""
 * @see <a href=""></a>
 */

@RequiredArgsConstructor @Slf4j
@Service public class UserServiceImpl implements UserService {

    private final PasswordEncoder passwordEncoder;
    private final UserMapper userMapper;

    /**
     * ํšŒ์› ๊ฐ€์ž… ์ „ ๋“ฑ๋ก๋œ ์ •๋ณด ์ธ์ง€ ํ™•์ธ
     * @param duplicateByIdInfoDTO - ํšŒ์› ๊ฐ€์ž… ์ „ ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” ์ •๋ณด ์ธ์ง€ ํ™•์ธ์„ ์œ„ํ•œ ์ด์šฉ์ž ์ž…๋ ฅ ํ•„์ˆ˜ ์ •๋ณด
     * @return CustomUserDetails - ํ•ด๋‹น ํšŒ์›์˜ ์ •๋ณด ๋ฐ˜ํ™˜
     * @see ""
     */

    @Override
    public DefaultResponse duplicateUserInfo(DuplicateByIdInfoDTO duplicateByIdInfoDTO) {

        log.info("UserServiceImpl์˜ duplicateId(String username)๊ฐ€ ํ˜ธ์ถœ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! Client๋กœ ๋ถ€ํ„ฐ ์ „๋‹ฌ๋œ ๊ฐ’ : " + duplicateByIdInfoDTO.toString());

        if (duplicateByIdInfoDTO == null) {
            log.info("์ด์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’์ด ๋ชจ๋‘ null ์ž…๋‹ˆ๋‹ค.");

            return DefaultResponse.response(400, "์ž˜๋ชป๋œ ์š”์ฒญ", "Bed Request");
        } // if (duplicateByIdInfoDTO == null) ๋

        log.info("DB์—์„œ ํšŒ์› ๊ฐ€์ž… ์š”์ฒญ ์ด์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ UserId(username)๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ํšŒ์›์ด ๋“ฑ๋ก ๋˜์–ด ์žˆ๋Š”์ง€ ์ฐพ๊ฒ ์Šต๋‹ˆ๋‹ค!");

        Optional<DuplicateByIdInfoDTO> findByUserInfo = userMapper.findByUserInfo(duplicateByIdInfoDTO);

        if (findByUserInfo.isEmpty()) {

            log.info("ํšŒ์› ๊ฐ€์ž… ์š”์ฒญ ์ด์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ Email ์ฃผ์†Œ๊ฐ€ DB์— ์ €์žฅ ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค!");
            log.info("ํšŒ์› ๊ฐ€์ž… ์ž…๋ ฅ๋ž€ ์ค‘ ์ค‘๋ณต ๋ถˆ๊ฐ€ํ•œ ๊ฐ’์— ๋Œ€ํ•ด ์ค‘๋ณต ๊ฐ’์ด ์žˆ๋Š”์ง€ ํ™•์ธ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!");

            return findByUserInfo.filter(user -> user. getUserEmail().equals(duplicateByIdInfoDTO.getUserEmail()))
                    .map(user -> {
                        log.info("์ด๋ฏธ ์กด์žฌํ•˜๋Š” E-mail ์ฃผ์†Œ ์ž…๋‹ˆ๋‹ค! 409 Code์™€ ํ•จ๊ป˜ \"์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ฐ’ ์ž…๋‹ˆ๋‹ค!\" ๋ฐ˜ํ™˜ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!");

                        return DefaultResponse.response(409, "์ด๋ฏธ ์กด์žฌํ•˜๋Š” ์ด๋ฉ”์ผ ์ž…๋‹ˆ๋‹ค!", "Conflict");

                    }).orElse((findByUserInfo.filter(user -> user.getNickname().equals(duplicateByIdInfoDTO.getNickname())))
                            .map(user -> {

                                log.info("์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๋ณ„๋ช… ์ž…๋‹ˆ๋‹ค! 409 Code์™€ ํ•จ๊ป˜ \"์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ฐ’ ์ž…๋‹ˆ๋‹ค!\" ๋ฐ˜ํ™˜ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!");

                                return DefaultResponse.response(409, "์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๋ณ„๋ช… ์ž…๋‹ˆ๋‹ค!", "Conflict");

                            }).orElse(((findByUserInfo.filter(user -> user.getUserPhone().equals(duplicateByIdInfoDTO.getUserPhone()))))
                                    .map(user -> {

                                        log.info("์ด๋ฏธ ์กด์žฌํ•˜๋Š” ํ•ธ๋“œํฐ ๋ฒˆํ˜ธ ์ž…๋‹ˆ๋‹ค! 200 Code์™€ ํ•จ๊ป˜ \"์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ฐ’ ์ž…๋‹ˆ๋‹ค!\" ๋ฐ˜ํ™˜ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!");

                                        return DefaultResponse.response(409, "์ด๋ฏธ ์กด์žฌํ•˜๋Š” ํ•ธ๋“œํฐ ๋ฒˆํ˜ธ ์ž…๋‹ˆ๋‹ค!", "Conflict");

                                    }).orElseGet(() -> {

                                        log.info("์ค‘๋ณต ๋˜๋Š” ๊ฐ’์ด ์—†์Šต๋‹ˆ๋‹ค! 200 Code์™€ ํ•จ๊ป˜ \"์‚ฌ์šฉ ๊ฐ€๋Šฅ!\" ๋ฐ˜ํ™˜ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!");

                                        return DefaultResponse.response(200, "์‚ฌ์šฉ ๊ฐ€๋Šฅ", "OK", findByUserInfo);

                                    })));
        } else {

            log.info("์ด๋ฏธ ์กด์žฌํ•˜๋Š” ID ์ž…๋‹ˆ๋‹ค! 409 Code์™€ ํ•จ๊ป˜ \"์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ฐ’ ์ž…๋‹ˆ๋‹ค!\" ๋ฐ˜ํ™˜ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!");

            return DefaultResponse.response(409, "์ด๋ฏธ ์กด์žฌํ•˜๋Š” ID ์ž…๋‹ˆ๋‹ค!", "Conflict");
        } // // if-else (checkEmail.isEmpty()) ๋

    } // duplicateId(String username) ๋

 

 

        ๐Ÿ“ฆ UserMapper.java

 

 

 

        ๐Ÿ“ฆ UserMapper.xml

 

 

 

 

 

    ๐Ÿ”ฝ Vue.js

        ๐Ÿ“ฆ SignUp.vue

SignUp.vue - 31 ~ 42

 

SignUp.vue - data()

๋ฐ˜์‘ํ˜•

 

methods: {
  // ID ์ค‘๋ณต ํ™•์ธ
  idCheck() {

    const pattern = /^\s+|\s+$/g;  // ๊ณต๋ฐฑ(Space)์— ํ•ด๋‹นํ•˜๋Š” ์ •๊ทœ ํ‘œํ˜„์‹

    console.log("์ž…๋ ฅ๋œ ์ด์šฉ์ž๊ฐ€ ์ด์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ID ๊ฐ’ : " + this.inputParam.userId);

    if (this.inputParam.userId === undefined || this.inputParam.userId === '' || this.inputParam.userId === null) {
      console.log("ID๊ฐ€ ์ž…๋ ฅ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค!")

      alert("ID๋ฅผ ์ž…๋ ฅ ํ•ด ์ฃผ์„ธ์š”!")

      this.$refs.userId.focus();

      return false;
    } // if (this.inputParam.userId === undefined || this.inputParam.userId === '') ๋

    if (this.inputParam.userId.replace(pattern, '') === "") {
      console.log("ID์— ๊ณต๋ฐฑ ๋ฌธ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค!")

      alert("ID์—๋Š” ๊ณต๋ฐฑ์„ ์ž…๋ ฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค!")

      this.$refs.userId.focus();

      return false;
    } // if (this.inputParam.userId.replace(pattern, '') === "") ๋

    console.log("Back End๋กœ ์š”์ฒญ๊ณผ ํ•จ๊ป˜ Data๋ฅผ ๋ณด๋‚ด๊ธฐ ์ „ Data ๊ฐ’ ํ™•์ธ : " + this.inputParam.toString())

    duplicateUserIdCheck(this.inputParam).then(response => {

      console.log("ID ์ค‘๋ณต ์š”์ฒญ ๋ณด๋‚ธ ๋’ค Back End์—์„œ ๋Œ์•„์˜จ ์‘๋‹ต์„ ํ™•์ธ ํ•ฉ๋‹ˆ๋‹ค! ID ๊ฐ’ : " + response.data.toString());

      if (response.data.statusCode === 409 || response.data.messageEn === "conflict") {
        console.log("์ด๋ฏธ ๋“ฑ๋ก๋œ ID ์ž…๋‹ˆ๋‹ค!");

        alert("์ด๋ฏธ ๋“ฑ๋ก๋œ ID ์ž…๋‹ˆ๋‹ค!")

        this.$refs.userId.focus();

        return false;

      } else {
        console.log("์ด์šฉ ๊ฐ€๋Šฅํ•œ ID ์ž…๋‹ˆ๋‹ค!")

        alert("์ด์šฉ ๊ฐ€๋Šฅํ•œ ID  ์ž…๋‹ˆ๋‹ค!")

        return true;
      }
    });
  }, // idCheck() ๋

 

 

 

 

 

 

 

 

 

    ๐Ÿ”ฝ DataBase

DB Table์— Value

 

ํ˜„์žฌ DB์—๋Š” ์ด๋ ‡๊ฒŒ ํ•œ ๊ฐœ์˜ ๊ณ„์ •๋งŒ ๋“ฑ๋ก์ด ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

์ฃผ๋‹ˆํ•˜๋ž‘์€ username(ID), nickname(๋ณ„๋ช…), userEmail, userPhone(ํ•ธ๋“œํฐ ๋ฒˆํ˜ธ)๋ฅผ ์ค‘๋ณต ํ™•์ธํ•˜์—ฌ ๊ฐ™์€ ๊ฒƒ์ด ์žˆ์œผ๋ฉด ๋‹ค์‹œ ๋“ฑ๋กํ•˜๋„๋ก ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๊ฒƒ์ด์—์š”.

 

 

 

 

 

โš ๏ธ ๋ฌธ์ œ ๋ฐœ์ƒ!

 

POSTMAN TEST

 

์œ„์™€ ๊ฐ™์ด POSTMAN์œผ๋กœ username(ID)๋ฅผ ๊ฒ€์‚ฌํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” 200 CODE๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

 

ํšŒ์› ๊ฐ€์ž… Form

 

๊ทธ๋Ÿฐ๋ฐ, ์ด๋ ‡๊ฒŒ Vue.js์—์„œ ์ค‘๋ณตํ™•์ธ์„ ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์ž๊พธ ์ด๋ฏธ ๋“ฑ๋ก๋˜์–ด ์žˆ๋‹ค๊ณ  ํ•ด๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด์—์š”.

 

 

2022-03-25 02:58:47.605  INFO 31480 --- [nio-8080-exec-6] c.d.j.controller.member.UserController   : UserController์˜ duplicateId(@RequestBody String username)๊ฐ€ ํ˜ธ์ถœ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! Client๋กœ ๋ถ€ํ„ฐ ์ „๋‹ฌ๋œ ๊ฐ’ ํ™•์ธ : DuplicateByIdInfoDTO(username=, nickname=, userEmail=null, userPhone=null)
2022-03-25 02:58:47.606  INFO 31480 --- [nio-8080-exec-6] c.d.j.controller.member.UserController   : userService.signUp(userSignUpRequestDTO)๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!
2022-03-25 02:58:47.606  INFO 31480 --- [nio-8080-exec-6] c.d.j.service.user.UserServiceImpl       : UserServiceImpl์˜ duplicateId(String username)๊ฐ€ ํ˜ธ์ถœ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! Client๋กœ ๋ถ€ํ„ฐ ์ „๋‹ฌ๋œ ๊ฐ’ : DuplicateByIdInfoDTO(username=, nickname=, userEmail=null, userPhone=null)
2022-03-25 02:58:47.606  INFO 31480 --- [nio-8080-exec-6] c.d.j.service.user.UserServiceImpl       : DB์—์„œ ํšŒ์› ๊ฐ€์ž… ์š”์ฒญ ์ด์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ UserId(username)๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ํšŒ์›์ด ๋“ฑ๋ก ๋˜์–ด ์žˆ๋Š”์ง€ ์ฐพ๊ฒ ์Šต๋‹ˆ๋‹ค!
2022-03-25 02:58:47.612  INFO 31480 --- [nio-8080-exec-6] log4jdbc.log4j2                          : 1. Connection.isValid(5) returned true
2022-03-25 02:58:47.613  INFO 31480 --- [nio-8080-exec-6] log4jdbc.log4j2                          : 1. Connection.getAutoCommit() returned true
2022-03-25 02:58:47.613  INFO 31480 --- [nio-8080-exec-6] log4jdbc.log4j2                          : 1. PreparedStatement.new PreparedStatement returned 
2022-03-25 02:58:47.613  INFO 31480 --- [nio-8080-exec-6] log4jdbc.log4j2                          : 1. Connection.prepareStatement(select username, nickname, userEmail, userPhone
        from user
        where 1 = 1) returned net.sf.log4jdbc.sql.jdbcapi.PreparedStatementSpy@452e1a54
2022-03-25 02:58:47.613  INFO 31480 --- [nio-8080-exec-6] log4jdbc.log4j2                          : 1. PreparedStatement.setFetchSize(500) returned 
2022-03-25 02:58:47.619  INFO 31480 --- [nio-8080-exec-6] log4jdbc.log4j2                          : 1. select username, nickname, userEmail, userPhone from user where 1 = 1  {executed in 5 ms}
2022-03-25 02:58:47.619  INFO 31480 --- [nio-8080-exec-6] log4jdbc.log4j2                          : 1. PreparedStatement.execute() returned true
2022-03-25 02:58:47.619  INFO 31480 --- [nio-8080-exec-6] log4jdbc.log4j2                          : 1. ResultSet.new ResultSet returned 
2022-03-25 02:58:47.619  INFO 31480 --- [nio-8080-exec-6] log4jdbc.log4j2                          : 1. PreparedStatement.getResultSet() returned net.sf.log4jdbc.sql.jdbcapi.ResultSetSpy@2c8c95
2022-03-25 02:58:47.620  INFO 31480 --- [nio-8080-exec-6] log4jdbc.log4j2                          : 1. ResultSet.getMetaData() returned org.mariadb.jdbc.MariaDbResultSetMetaData@7c8f92e5
2022-03-25 02:58:47.620  INFO 31480 --- [nio-8080-exec-6] log4jdbc.log4j2                          : 1. ResultSet.getType() returned 1003
2022-03-25 02:58:47.620  INFO 31480 --- [nio-8080-exec-6] log4jdbc.log4j2                          : 1. ResultSet.isClosed() returned false
2022-03-25 02:58:47.620  INFO 31480 --- [nio-8080-exec-6] log4jdbc.log4j2                          : 1. ResultSet.next() returned true
2022-03-25 02:58:47.622  INFO 31480 --- [nio-8080-exec-6] log4jdbc.log4j2                          : 1. ResultSet.getString(username) returned ์ฃผ๋‹ˆ
2022-03-25 02:58:47.623  INFO 31480 --- [nio-8080-exec-6] log4jdbc.log4j2                          : 1. ResultSet.getString(nickname) returned ์ฃผ๋‹ˆํ•˜๋ž‘
2022-03-25 02:58:47.623  INFO 31480 --- [nio-8080-exec-6] log4jdbc.log4j2                          : 1. ResultSet.getString(userEmail) returned junyharang8592@gmail.com
2022-03-25 02:58:47.623  INFO 31480 --- [nio-8080-exec-6] log4jdbc.log4j2                          : 1. ResultSet.getString(userPhone) returned 010-123-4567
2022-03-25 02:58:47.623  INFO 31480 --- [nio-8080-exec-6] log4jdbc.log4j2                          : 1. ResultSet.isClosed() returned false
2022-03-25 02:58:47.624  INFO 31480 --- [nio-8080-exec-6] log4jdbc.log4j2                          : 
|---------|---------|-------------------------|-------------|
|username |nickname |useremail                |userphone    |
|---------|---------|-------------------------|-------------|
|์ฃผ๋‹ˆ       |์ฃผ๋‹ˆํ•˜๋ž‘     |junyharang8592@gmail.com |010-123-4567 |
|---------|---------|-------------------------|-------------|

์œ„์˜ Console Log์—์„œ ๋ˆˆ ์—ฌ๊ฒจ ๋ด์•ผ ํ•  ๋ถ€๋ถ„์ด ๋ฐ”๋กœ ์•„๋ž˜์ธ ๊ฒƒ์ด์—์š”.

 

 

2022-03-25 02:58:47.605  INFO 31480 --- [nio-8080-exec-6] c.d.j.controller.member.UserController   : UserController์˜ duplicateId(@RequestBody String username)๊ฐ€ ํ˜ธ์ถœ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! Client๋กœ ๋ถ€ํ„ฐ ์ „๋‹ฌ๋œ ๊ฐ’ ํ™•์ธ : DuplicateByIdInfoDTO(username=, nickname=, userEmail=null, userPhone=null)
2022-03-25 02:58:47.606  INFO 31480 --- [nio-8080-exec-6] c.d.j.controller.member.UserController   : userService.signUp(userSignUpRequestDTO)๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!
2022-03-25 02:58:47.606  INFO 31480 --- [nio-8080-exec-6] c.d.j.service.user.UserServiceImpl       : UserServiceImpl์˜ duplicateId(String username)๊ฐ€ ํ˜ธ์ถœ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! Client๋กœ ๋ถ€ํ„ฐ ์ „๋‹ฌ๋œ ๊ฐ’ : DuplicateByIdInfoDTO(username=, nickname=, userEmail=null, userPhone=null)

 

๋ณด๋ฉด Client(Vue.js)์—์„œ ์ „๋‹ฌ๋˜๋Š” ๊ฐ’์ด ๋ชจ๋‘ null์ธ ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

 

 

 

์—ฌ๊ธฐ์„œ ๋ณด๋ฉด where ์ ˆ์— 1=1 ์ฆ‰, ์ฐธ์ด ๋˜๊ฒŒ ํ•ด ๋†“๊ณ , if์ ˆ๋กœ ์กฐ๊ฑด์— ๋งž์œผ๋ฉด AND ์กฐ๊ฑด์ ˆ๋กœ ํ•ด๋‹น ์ •๋ณด๋ฅผ ์ฐพ๊ฒŒ ๋งŒ๋“ค์–ด ๋…ผ๊ฒƒ์ด์—์š”.

 

 

 

๐Ÿค” ์›์ธ ๋ถ„์„

 

๊ทผ๋ฐ NULL ๊ฐ’์ด ๋“ค์–ด์™€ ๋ฒ„๋ฆฌ๋‹ˆ ๊ฒ€์ƒ‰ํ•  ๊ฒƒ์€ ์—†๊ณ , where ์ ˆ์— 1=1์ด๋ผ๊ณ  ๋˜์–ด ์žˆ์œผ๋‹ˆ ๊ฒฐ๊ตญ ๋ชจ๋“  Data๋ฅผ ์ฐพ๊ฒŒ ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ณ , ๊ทธ ๊ฒฐ๊ณผ ๋‹ค๋ฅธ username์„ ์ž…๋ ฅํ–ˆ์ง€๋งŒ, DB์—์„œ ์–ด๋–ค ๊ฒฐ๊ณผ๊ฐ€ ์ฐพ์•„์ง€๋ฉด ๊ฐ’์ด ์žˆ๋‹ค๊ณ  ํŒ๋‹จํ•˜๋ผ๊ณ  Logic์„ ์งฐ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ตญ '์ด๋ฏธ ๋“ฑ๋ก ๋œ ID'๋ผ๊ณ  ์ถœ๋ ฅ์„ ํ•ด ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด์—์š”.

 

๊ทธ๋Ÿผ ๋„๋Œ€์ฒด ์–ด๋–ค ๋ฌธ์ œ ๋•Œ๋ฌธ์— ์ด์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒƒ์ผ๊นŒ์š”?

 

 

 

๐Ÿป ๋ฌธ์ œ ํ•ด๊ฒฐ!

์ฃผ๋‹ˆํ•˜๋ž‘์€ ๊ทธ๋Ÿผ ๋„๋Œ€์ฒด ์™œ? Client์—์„œ๋Š” ์ œ๋Œ€๋กœ ๊ฐ’์ด ๋˜์ ธ์ง€๋Š”๋ฐ, ๋ฐ›๋Š” ๊ณณ์—์„œ๋Š” ๋ชป ๋ฐ›๋Š” ๊ฒƒ์ผ๊นŒ๋ฅผ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ๋ณ€์ˆ˜๋ช…์— ๋ˆˆ์ด ๊ฐ„ ๊ฒƒ์ด์—์š”.

 

 

์œ„ DTO๋Š” ํšŒ์› ๊ฐ€์ž… ์ „ ์ค‘๋ณต ํ™•์ธ์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฐ’๋“ค์„ ๋‹ด๋Š” ๋“ฑ์˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” DTO Class ๊ฒƒ์ด์—์š”.

Controller์—์„œ๋Š” ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ์ด Class๋ฅผ ๊ฐ์ฒด๋กœ ๋ฐ›๊ณ  ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

 

 

SignUp.vue - 37 ~ 41

 

๋‹ค์‹œ ์ด ๊ณณ Vue.js Code์—์„œ ์ฃผ๋‹ˆํ•˜๋ž‘์€ 38๋ฒˆ์งธ ์ค„ v-model์— ์ง‘์ค‘ ํ•ด ๋ณธ ๊ฒƒ์ด์—์š”.

V-model์— Mapping๋œ ๊ฐ์ฒด์— ID๊ฐ’์ด ๋‹ด๊ธธ ๊ฒƒ์ด๊ณ , 

 

SignUp.vue - 309 ~ 333

์ด ๊ณณ idCheck()์—์„œ ์‚ฌ์šฉ์ด ๋˜๋ฉด์„œ BackEnd๋กœ๋„ ์ „๋‹ฌ์ด ๋˜๋Š” ๊ฒƒ์ด์—์š”.

๊ทผ๋ฐ ๋ฌธ์ œ๋Š” ๋ฐ”๋กœ Vue์— `userId`์™€ Spring์— `username`์ด ๋˜‘๊ฐ™์€ ๊ฐ’์„ ๋ฐ›๊ณ , ๋˜‘๊ฐ™์€ ์—ญํ• ์„ ํ•˜์ง€๋งŒ, ๊ฒฐ๋ก ์ ์œผ๋กœ ์ด๋ฆ„์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— Vue์—์„œ๋Š” `userId`๋ฅผ ๋„˜๊ฒผ์ง€๋งŒ, Spring์€ ์ด ๋ณ€์ˆ˜๋ช…์„ ๋ชฐ๋ผ `Null` ๊ฐ’์ด ๋“ค์–ด์™”๋˜ ๊ฒƒ์ด์—์š”.

 

 

 

์›์ธ์„ ํŒŒ์•…ํ–ˆ์œผ๋‹ˆ ์žฌ๋น ๋ฅด๊ฒŒ ์ˆ˜์ •ํ•˜๊ณ , ๋‹ค์‹œ Test๋ฅผ ํ•ด๋ด์•ผ ํ•˜๊ฒ ์–ด์š”!

 

 

๋ฌธ์ œ ํ•ด๊ฒฐ ํ™”๋ฉด

 

์•ผํ˜ธ!๐Ÿ˜€

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ•œ ๊ฒƒ์ด์—์š”!

 

 

 

 


 

 

 

728x90
๋ฐ˜์‘ํ˜•