<aside> <img src="https://raw.githubusercontent.com/eirikmadland/notion-icons/master/v5/icon3/ul-github.svg" alt="https://raw.githubusercontent.com/eirikmadland/notion-icons/master/v5/icon3/ul-github.svg" width="40px" /> 참조 Github Code

</aside>

1. CREATE 관련 로직 구현

business logic start [request data 대입]

// business logic start
Developer developer = Developer.builder()
        .developerLevel(request.getDeveloperLevel())
        .developerSkillType(request.getDeveloperSkillType())
        .experienceYear(request.getExperienceYears())
        .memberId(request.getMemberId())
        .name(request.getName())
        .age(request.getAge())
        .build();

CreateDeveloper의 Response - fromEntity 메서드 구현

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public static class Response{
    private DeveloperLevel developerLevel;
    private DeveloperSkillType developerSkillType;
    private Integer experienceYears;
    private String memberId;

    public static Response fromEntity(Developer developer) {
        return Response.builder()
                .developerLevel(developer.getDeveloperLevel())
                .developerSkillType(developer.getDeveloperSkillType())
                .experienceYears(developer.getExperienceYear())
                .memberId(developer.getMemberId())
                .build();
    }
}

DMakerService의 createDeveloper 구현

@Transactional
public CreateDeveloper.Response createDeveloper(CreateDeveloper.Request request) {
    validateCreateDeveloperRequest(request);

    // business logic start
    Developer developer = Developer.builder()
            .developerLevel(request.getDeveloperLevel())
            .developerSkillType(request.getDeveloperSkillType())
            .experienceYear(request.getExperienceYears())
            .memberId(request.getMemberId())
            .name(request.getName())
            .age(request.getAge())
            .build();

    developerRepository.save(developer);
    return CreateDeveloper.Response.fromEntity(developer);
}

DMakerController의 createDevelopers 수정

@PostMapping("/create-developers")
public CreateDeveloper.Response createDevelopers(
        @Valid @RequestBody CreateDeveloper.Request request
) {
    log.info("POST /create-developers HTTP/1.1 ");
    log.info("requset : {}", request);

    return  dmakerService.createDeveloper(request);
}

2. 간단한 HTTP TEST 구현(.http)

dev.create.http [create-developers TEST 파일]

스크린샷 2022-03-15 오후 11.28.27.png

POST <http://localhost:8080/create-developers>
Content-Type: application/json;charset=utf-8

{
  "developerLevel":"JUNIOR",
  "developerSkillType":"FRONT_END",
  "experienceYears":2,
  "memberId":"Micky",
  "name":"mouse",
  "age":"20"
}
### createDevelopers TEST