예제를 만들자 뚱땅뚱땅

API 만들기 연습 #2 등록을 해보자

NEWDODORIPYO 2022. 8. 24. 17:28

간단하게 등록하는 기능을 먼저 만들어 보겠습니다

본격 API 서버 개발 시작

우선 insert 기능을 먼저 만들어 보자

구현되는 과정

 

  • repository는 DB와 통신하는 로직이 들어가는 곳
  • service는 repository에서 구현된 로직을 받아 기능적인 로직을 만드는 곳
  • DTO는 repository와 service에서 사용하는 객체
  • Controller에서는 완성된 로직을 받아 전달한다

 

DTO와 VO 만들기

ApiVO

package com.apiservice.model;

import lombok.*;

import java.time.LocalDateTime;

@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ApiVO {

    private Integer memberNumber; //사용자 번호
    private String memberId; // 사용자 ID
    private String memberPw; // 사용자 PW
    private String memberName; // 사용자 이름
    private String memberPhone; // 사용자 휴대폰 번호
    private String advert; // 광고 수신
    private LocalDateTime regDate;
    private LocalDateTime updateDate;


}

ApiDTO

package com.apiservice.model;

import lombok.*;

import java.time.LocalDateTime;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ApiDTO {


    private Integer memberNumber; //사용자 번호

    private String memberId; // 사용자 ID

    private String memberPw; // 사용자 PW

    private String memberName; // 사용자 이름

    private String memberPhone; // 사용자 휴대폰 번호

    private String advert; // 광고 수신


    private LocalDateTime regDate;

    private LocalDateTime updateDate;


}

repository 만들기

package com.apiservice.repository;

import com.apiservice.model.ApiDTO;
import org.springframework.stereotype.Repository;

@Repository
public interface ApiRepository {

    void insert(ApiDTO apiDTO);
}

repository. xml 만들기

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.apiservice.repository.ApiRepository">

    <insert id="insert">
        insert into api(member_id , member_pw , member_name , member_phone , advert)
        values (#{memberId} , #{memberPw} , #{memberName} , #{memberPhone} , #{advert})
    </insert>



</mapper>

service 만들기

service

package com.apiservice.service;

import com.apiservice.model.ApiDTO;

public interface ApiService {

    void register(ApiDTO apiDTO);
}

serviceImpl

package com.apiservice.service;

import com.apiservice.model.ApiDTO;
import com.apiservice.repository.ApiRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;

@Service
@Log4j2
@RequiredArgsConstructor
public class ApiServiceImpl implements ApiService {

    private final ApiRepository apiRepository;

    @Override
    public void register(ApiDTO apiDTO) {

        log.info("service insert");
        log.info(apiDTO);

        apiRepository.insert(apiDTO);

    }
}
  • 아직까지는 단순하게 insert만 호출한다

Controller 만들기

package com.apiservice.controller;

import com.apiservice.model.ApiDTO;
import com.apiservice.service.ApiService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/")
@Log4j2
@RequiredArgsConstructor
public class ApiController {

    private final ApiService apiService;

    @ApiOperation("Api Post register")
    @PostMapping("/register")
    public ResponseEntity registerPost(ApiDTO apiDTO){
        log.info(apiDTO);
        log.info("controller register");

        apiService.register(apiDTO);

        return new ResponseEntity(HttpStatus.OK);
    }
}
  • 기본적인 register 기능을 만들었다

✌swagger-ui로 테스트해보기

  • 빈 공간인 memberNumber은 PK값으로 Aoto inc 이기에 값을 입력 안 해준다 
  • regDate , updateDate 도 Default 값으로 now( ) 이기에 입력을 안해준다 

DB 확인

  • 값이 잘 들어갔다 

이렇게 기본적인 Insert 기능을 만들어 보았습니다 보완해야 할 곳이 많은데 차차 만들면서 수정해 가보도록 하겠습니다