뉴스를 받아와서 아래 넣어줄껀데
뉴스 api는 검색어가 필요한거 밖에 없는거같아
네이버 뉴스 api로 가져오기로 하였다
@Service
public class NewsService {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
// 네이버 검색 API 요청
public List<NewsVO> search() {
// 네이버 검색 API 요청
String clientId = Key.clientId;
String clientSecret = Key.clientSecret;
String text = "이슈"; //LocalDate.now().toString()
//String apiURL = "https://openapi.naver.com/v1/search/blog?query=" + text; // JSON 결과
URI uri = UriComponentsBuilder
.fromUriString("https://openapi.naver.com")
.path("/v1/search/news.json")
.queryParam("query", text)
.queryParam("display", 30)
.queryParam("start", 1)
.queryParam("sort", "sim")
.encode()
.build()
.toUri();
// Spring 요청 제공 클래스
RequestEntity<Void> req = RequestEntity
.get(uri)
.header("X-Naver-Client-Id", clientId)
.header("X-Naver-Client-Secret", clientSecret)
.build();
// Spring 제공 restTemplate
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> resp = restTemplate.exchange(req, String.class);
// JSON 파싱 (Json 문자열을 객체로 만듦, 문서화)
ObjectMapper om = new ObjectMapper();
IndexVO resultVO = null;
try {
resultVO = om.readValue(resp.getBody(), IndexVO.class);
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (JsonProcessingException e) {
e.printStackTrace();
}
List<NewsVO> News =resultVO.getItems(); // News를 html에 출력 -> model 선언
logger.info("뉴스정보: "+ News);
return News;
}
@Autowired
private NewsService newsService;
@Controller
public class Controller {
model.addAttribute("News", newsService.search());
return "index";
}
<div id="news">
<table>
<c:forEach var="News" items="${News}">
<tr>
<td><a target="_blank" href="${News.link}">${News.title}</a></td>
</tr>
</c:forEach>
</table>
</div>
간단하게 불러오는 방법을 사용하였다
그냥 컨트롤러에서 호출해서 간단하게 보고만 싶다고 하시는분은
@Controller
public class NewsController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
// 네이버 검색 API 요청
@GetMapping("/news")
public @ResponseBody List<NewsVO> search() {
// 네이버 검색 API 요청
String clientId = Key.clientId;
String clientSecret = Key.clientSecret;
String text = "이슈"; //LocalDate.now().toString()
URI uri = UriComponentsBuilder
.fromUriString("https://openapi.naver.com")
.path("/v1/search/news.json")
.queryParam("query", text)
.queryParam("display", 30)
.queryParam("start", 1)
.queryParam("sort", "sim")
.encode()
.build()
.toUri();
// Spring 요청 제공 클래스
RequestEntity<Void> req = RequestEntity
.get(uri)
.header("X-Naver-Client-Id", clientId)
.header("X-Naver-Client-Secret", clientSecret)
.build();
// Spring 제공 restTemplate
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> resp = restTemplate.exchange(req, String.class);
// JSON 파싱 (Json 문자열을 객체로 만듦, 문서화)
ObjectMapper om = new ObjectMapper();
IndexVO resultVO = null;
try {
resultVO = om.readValue(resp.getBody(), IndexVO.class);
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (JsonProcessingException e) {
e.printStackTrace();
}
List<NewsVO> News =resultVO.getItems(); // News를 html에 출력 -> model 선언
logger.info("뉴스정보: "+ News);
return News;
}
}
이렇게 확인해 볼 수 있다