개인프로젝트/과제
3. 수정 API
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"
}
}