Classic/VPC 환경에서 이용 가능합니다.
검색 API로 네이버 검색의 블로그 검색 결과를 조회하는 구현 예제입니다. 검색 API의 다른 작업을 구현하는 방법도 이와 유사하기 때문에 이 구현 예제를 참고하면 검색 API를 구현할 수 있습니다.
참고
- 샘플 코드의
YOUR_CLIENT_ID에는 네이버 클라우드 플랫폼 콘솔에서 발급받은 Client ID를,YOUR_CLIENT_SECRET에는 Client ID에 매핑되는 Client Secret을 입력해 주십시오. - Client ID와 Client Secret 발급 방법은 NAVER API HUB 개요를 참조해 주십시오.
블로그 검색 결과 조회
네이버 검색의 블로그 검색 결과를 조회하는 검색 API 예제를 설명합니다. 요청 URI(/search/v1/blog)와 쿼리 파라미터(query, display 등)를 다른 검색 작업의 값으로 교체하면 동일한 방식으로 다른 검색 결과를 조회할 수 있습니다.
Java
Java 기반의 검색 API 예제 코드는 다음과 같습니다.
package com.naver.apihub.example;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
public class ApiExampleSearchBlog {
public static void main(String[] args) {
String clientId = "YOUR_CLIENT_ID"; // 애플리케이션 Client ID
String clientSecret = "YOUR_CLIENT_SECRET"; // 애플리케이션 Client Secret
String text;
try {
text = URLEncoder.encode("커피", "UTF-8");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("검색어 인코딩 실패", e);
}
String apiUrl = "https://naverapihub.apigw.ntruss.com/search/v1/blog?query=" + text + "&display=2";
Map<String, String> requestHeaders = new HashMap<>();
requestHeaders.put("X-NCP-APIGW-API-KEY-ID", clientId);
requestHeaders.put("X-NCP-APIGW-API-KEY", clientSecret);
String responseBody = get(apiUrl, requestHeaders);
System.out.println(responseBody);
}
private static String get(String apiUrl, Map<String, String> requestHeaders) {
HttpURLConnection con = connect(apiUrl);
try {
con.setRequestMethod("GET");
for (Map.Entry<String, String> header : requestHeaders.entrySet()) {
con.setRequestProperty(header.getKey(), header.getValue());
}
int responseCode = con.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) { // 정상 응답
return readBody(con.getInputStream());
} else { // 에러 응답
return readBody(con.getErrorStream());
}
} catch (IOException e) {
throw new RuntimeException("API 요청과 응답 실패", e);
} finally {
con.disconnect();
}
}
private static HttpURLConnection connect(String apiUrl) {
try {
URL url = new URL(apiUrl);
return (HttpURLConnection) url.openConnection();
} catch (MalformedURLException e) {
throw new RuntimeException("API URL이 잘못되었습니다. : " + apiUrl, e);
} catch (IOException e) {
throw new RuntimeException("연결이 실패했습니다. : " + apiUrl, e);
}
}
private static String readBody(InputStream body) {
InputStreamReader streamReader = new InputStreamReader(body, StandardCharsets.UTF_8);
try (BufferedReader lineReader = new BufferedReader(streamReader)) {
StringBuilder responseBody = new StringBuilder();
String line;
while ((line = lineReader.readLine()) != null) {
responseBody.append(line);
}
return responseBody.toString();
} catch (IOException e) {
throw new RuntimeException("API 응답을 읽는데 실패했습니다.", e);
}
}
}
PHP
PHP 기반의 검색 API 예제 코드는 다음과 같습니다.
<?php
$client_id = "YOUR_CLIENT_ID";
$client_secret = "YOUR_CLIENT_SECRET";
$enc_text = urlencode("커피");
$url = "https://naverapihub.apigw.ntruss.com/search/v1/blog?query=" . $enc_text . "&display=2";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$headers = array();
$headers[] = "X-NCP-APIGW-API-KEY-ID: " . $client_id;
$headers[] = "X-NCP-APIGW-API-KEY: " . $client_secret;
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status_code == 200) {
echo $response;
} else {
echo "Error 내용:" . $response;
}
?>
Node.js
Node.js 기반의 검색 API 예제 코드는 다음과 같습니다.
const client_id = 'YOUR_CLIENT_ID';
const client_secret = 'YOUR_CLIENT_SECRET';
const api_url =
'https://naverapihub.apigw.ntruss.com/search/v1/blog?query=' +
encodeURIComponent('커피') +
'&display=2';
(async () => {
const response = await fetch(api_url, {
headers: {
'X-NCP-APIGW-API-KEY-ID': client_id,
'X-NCP-APIGW-API-KEY': client_secret,
},
});
console.log(response.status);
console.log(await response.text());
})();
Python
Python 기반의 검색 API 예제 코드는 다음과 같습니다.
import urllib.request
import urllib.parse
client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"
enc_text = urllib.parse.quote("커피")
url = "https://naverapihub.apigw.ntruss.com/search/v1/blog?query=" + enc_text + "&display=2"
request = urllib.request.Request(url)
request.add_header("X-NCP-APIGW-API-KEY-ID", client_id)
request.add_header("X-NCP-APIGW-API-KEY", client_secret)
response = urllib.request.urlopen(request)
rescode = response.getcode()
if rescode == 200:
response_body = response.read()
print(response_body.decode("utf-8"))
else:
print("Error Code:" + str(rescode))
C#
C# 기반의 검색 API 예제 코드는 다음과 같습니다.
using System;
using System.IO;
using System.Net;
using System.Text;
namespace NaverApiHubExample
{
public class ApiExampleSearchBlog
{
static void Main(string[] args)
{
string clientId = "YOUR_CLIENT_ID";
string clientSecret = "YOUR_CLIENT_SECRET";
string query = WebUtility.UrlEncode("커피");
string url = "https://naverapihub.apigw.ntruss.com/search/v1/blog?query=" + query + "&display=2";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Headers.Add("X-NCP-APIGW-API-KEY-ID", clientId);
request.Headers.Add("X-NCP-APIGW-API-KEY", clientSecret);
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
Console.WriteLine(reader.ReadToEnd());
}
}
catch (WebException e) // 에러 응답
{
using (StreamReader reader = new StreamReader(e.Response.GetResponseStream(), Encoding.UTF8))
{
Console.WriteLine(reader.ReadToEnd());
}
}
}
}
}