ydin 2022. 8. 23. 23:34

- updateRecruit()

위치 : /web/recruitment/RecruitmentController.class

@PatchMapping("/update")
public ApiResponse<UpdateRecruitResponse> updateRecruit(@RequestBody UpdateRecruitRequest request) {
    UpdateRecruitResponse response = recruitmentService.updateRecruit(request);
    return ApiResponse.success(response);
}

 

- updateRecruit()

위치 : /service/RecruitmentService.class

user validation 이나 exception을 하지 않아서 그런지 코드가 약간 빈약해보인다 

public UpdateRecruitResponse updateRecruit(UpdateRecruitRequest request) {

    Optional<Recruitment> findRecruit = recruitmentRepository.findById(request.getId());

    findRecruit.get().setPosition(request.getPosition());
    findRecruit.get().setReward(request.getReward());
    findRecruit.get().setContents(request.getContents());
    findRecruit.get().setTechInfo(request.getTechInfo());

    Recruitment updated = recruitmentRepository.save(findRecruit.get());

    UpdateRecruitResponse response = UpdateRecruitResponse.of(updated);

    return response;
}

 

- UpdateRecruitRequest

위치 : /web/recruitment/dto/request

@ToString
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class UpdateRecruitRequest {

    private Long id;
    private String position;
    private Integer reward;
    private String contents;
    private String techInfo;
}

 

- UpdateRecruitResponse

위치 : /web/recruitment/dto/response

@ToString
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class UpdateRecruitResponse {

    private String position;
    private Integer reward;
    private String contents;
    private String techInfo;

    @Builder
    public UpdateRecruitResponse(String position, Integer reward, String contents, String techInfo) {
        this.position = position;
        this.reward = reward;
        this.contents = contents;
        this.techInfo = techInfo;
    }

    public static UpdateRecruitResponse of(Recruitment recruitment) {
        UpdateRecruitResponse response = UpdateRecruitResponse.builder()
                .position(recruitment.getPosition())
                .reward(recruitment.getReward())
                .contents(recruitment.getContents())
                .techInfo(recruitment.getTechInfo())
                .build();
        return response;
    }
}

 

- Postman 

 

PATCH http://localhost:8080/recruitment/update

 

Request Body

  • application/json
{   
    "id" : 1,
    "position" : "Backend Junior Position",
    "reward" : 1300000, //1500000에서 수정
    "contents" : "wanted now hiring backend junior position",
    "techInfo" : "Python" 
}

 

Response Body

{
    "data": {
        "position": "Backend Junior Position",
        "reward": 1300000,
        "contents": "wanted now hiring backend junior position",
        "techInfo": "Python"
    }
}