간단하게 등록하는 기능을 먼저 만들어 보겠습니다
✌본격 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 기능을 만들어 보았습니다 보완해야 할 곳이 많은데 차차 만들면서 수정해 가보도록 하겠습니다
'예제를 만들자 뚱땅뚱땅' 카테고리의 다른 글
API 만들기 연습 #6 유효성 검증 (0) | 2022.08.30 |
---|---|
API 만들기 연습 #5 CustomException (0) | 2022.08.29 |
API 만들기 연습 #4 페이징 (0) | 2022.08.26 |
API 만들기 연습 #3 update , delete (0) | 2022.08.25 |
#1 CRUD 기능을 하는 API 서버 만들어보기 (0) | 2022.08.24 |