Controller에서 값을 전달한 뒤 Service에서 처리하는 로직을 작성해 보겠다
@RequiredArgsConstructor
@Service
@Slf4j
public class ApiService {
private final MovieRepository movieRepository;
LocalDateTime dateTime = LocalDateTime.now();
public String getInfo(String result) {
JsonArray list = null;
log.info("서비스 시작" );
JsonParser jsonParser = new JsonParser();
JsonObject jsonObject = (JsonObject) jsonParser.parse(result);
list = (JsonArray) jsonObject.get("results");
for (int k = 0; k < list.size(); k++) {
JsonObject contents = (JsonObject) list.get(k);
String ImgUrl = "https://image.tmdb.org/t/p/w200";
String match = "[\"]";
movieRepository.save(
Movie.builder()
.description(contents.get("overview").toString())
.title(contents.get("title").toString())
.imgUrl(ImgUrl + contents.get("poster_path").toString().replaceAll(match, ""))
.createdAt(dateTime)
.modifiedAt(dateTime)
.build()
);
}
return "ok";
}
}
원래 Array로 되어있던 값을 쪼개어 Json 형식으로 만들고 그 정보를 JsonObject contents에 넣었다
그리고 값을 Repository에 넣어주었다
ImgUrl을 추가로 넣어주어야 + .jpg 형태로 이미지 값을 불러올 수 있다
그리고 API에서 값으로 받아올때 "" 로 .jpg가 감싸져 있어서 정규식을 사용하여 없애주었다
다음으로 JPA MovieRepository를 작성해주고
@Entity
@Getter
@Setter
@EqualsAndHashCode(of = "id")
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Movie {
@Id @GeneratedValue
private Long id;
private String imgUrl;
@Column(nullable = false)
private String title;
@Lob
@Column(nullable = false)
private String description;
private LocalDateTime createdAt;
private LocalDateTime modifiedAt;
domain 을 작성해주면 로직 완성이다
이제 이 값을 React로 보내서 React에서 값을 처리해주면 완성이다.
React에서 값 처리하는게 너무 힘들어서 오랜 기간 삽질했다...
'프레임워크 > 스프링' 카테고리의 다른 글
[Spring] TMDB API 영화 데이터 DB 저장 (4) (0) | 2022.05.16 |
---|---|
[Spring] TMDB API 영화 데이터 DB 저장 (3) (0) | 2022.05.14 |
[Spring] TMDB API 영화 데이터 DB 저장 (1) (0) | 2022.05.10 |
[Redis] MongoDB와 Redis를 사용하여 Molon차트 저장하기 (2) (0) | 2022.05.08 |
[Redis] MongoDB와 Redis를 사용하여 Molon차트 저장하기 (1) (0) | 2022.05.08 |
댓글