본문 바로가기
개발/Spring

[Spring] REST API 리턴 시 원하는 JSON 데이터 반환하기

by tempus 2021. 10. 8.
반응형

 

API를 만들다가 응답 값으로 내가 원하는 데이터만 뽑아서 원하는 JSON 데이터로 반환을 해야 했는데 처음에는 헤매다가 여기저기 찾아서 해결을 했습니다. 제가 한 방법보다 더 좋은 방법이 있을 것 같은 느낌이 들지만 한 번 정리해보겠습니다. (피드백은 언제나 환영합니다.)

 

예를 들어 2개의 모델이 있다고 가정합니다. (DB엔진은 PostgreSQL)

User.java

@Data
@Entity
@Table(name="User", schema = "default$default")
public class User {
    @Id
    String id;

    Integer year;
    String name;

    Date createdAt;

}

 

Job.java

@Data
@Entity
@Table(name="Job", schema = "default$default")
public class Job {
    @Id
    String id;

    string user;
    string name;
    String note;

    Date createdAt;

}

 

두 모델에서 조회를 하여 사람의 이름과 직업의 이름만 JSON 형태로 반환하고 싶을 때 Service부분에 다음과 같이 작성을 해주면 됩니다.

 

UserService.java

@Transactional
public  Map<String, Object>getEverything(String param) {
    Map<String, Object> result = new HashMap<>();
    User user = userRepository.findUserByParam(param);
    
    if(user == null) return null;
    
    Job job = jobRepository.findJobByUser(user.id);

    result.put("userName", user.getName());
    result.put("jobName", job.getName());
    
    return result;
}

이를 Controller부분에서 호출하여 확인하면 다음과 같이 JSON 형태로 응답을 받을 수 있습니다.

 

결과

{
  "userName": "Jack Peter",
  "jobName": "developer"
}

 

반응형

댓글


loading