빠른 시작: C#을 사용하여 Bing Custom Search 엔드포인트 호출
경고
2020년 10월 30일에 Bing Search API가 Azure AI 서비스에서 Bing Search Services로 이동되었습니다. 이 문서는 참조용으로만 제공됩니다. 업데이트된 문서는 Bing search API 문서를 참조하세요. Bing 검색을 위한 새 Azure 리소스 만들기에 대한 지침은 Azure Marketplace를 통해 Bing Search 리소스 만들기를 참조하세요.
이 빠른 시작을 사용하여 Bing Custom Search 인스턴스의 검색 결과를 요청하는 방법에 대해 알아봅니다. 이 애플리케이션은 C#으로 작성되지만 Bing Custom Search API는 대부분의 프로그래밍 언어와 호환되는 RESTful 웹 서비스입니다. 이 샘플의 소스 코드는 GitHub에 제공됩니다.
사전 요구 사항
Bing Custom Search 인스턴스 자세한 내용은 빠른 시작: 처음으로 Bing Custom Search 인스턴스 만들기를 참조하세요.
Visual Studio 2019 이상의 모든 버전.
Linux/MacOS를 사용하는 경우 이 애플리케이션은 Mono를 사용하여 실행할 수 있습니다.
Bing Custom Search NuGet 페키지.
Visual Studio에서 이 패키지를 설치하려면 다음을 수행합니다.
- 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭한 다음, NuGet 패키지 관리를 선택합니다.
- Microsoft.Azure.CognitiveServices.Search.CustomSearch를 검색하여 선택한 다음, 패키지를 설치합니다.
Bing Custom Search NuGet 패키지를 설치하면 Visual Studio에서 다음 패키지도 설치합니다.
- Microsoft.Rest.ClientRuntime
- Microsoft.Rest.ClientRuntime.Azure
- Newtonsoft.Json
Azure 리소스 만들기
다음 Azure 리소스 중 하나를 만들어 Bing Custom Search API 사용을 시작합니다.
Bing Custom Search 리소스
- 리소스를 삭제할 때까지 Azure Portal을 통해 사용할 수 있습니다.
- 평가판 가격 책정 계층을 사용하여 서비스를 사용해보고, 나중에 프로덕션용 유료 계층으로 업그레이드합니다.
다중 서비스 리소스
- 리소스를 삭제할 때까지 Azure Portal을 통해 사용할 수 있습니다.
- 여러 Azure AI 서비스에서 애플리케이션에 동일한 키와 엔드포인트를 사용합니다.
애플리케이션 만들기 및 초기화
Visual Studio를 사용하여 새 C# 콘솔 애플리케이션을 만듭니다. 그런 다음, 프로젝트에 다음 패키지를 추가합니다.
using System; using System.Net.Http; using System.Web; using Newtonsoft.Json;
Bing Custom Search API에서 반환된 검색 결과를 저장하는 다음 클래스를 만듭니다.
public class BingCustomSearchResponse { public string _type{ get; set; } public WebPages webPages { get; set; } } public class WebPages { public string webSearchUrl { get; set; } public int totalEstimatedMatches { get; set; } public WebPage[] value { get; set; } } public class WebPage { public string name { get; set; } public string url { get; set; } public string displayUrl { get; set; } public string snippet { get; set; } public DateTime dateLastCrawled { get; set; } public string cachedPageUrl { get; set; } }
프로젝트의 기본 메서드에서 Bing Custom Search API 구독 키, 검색 인스턴스의 사용자 지정 구성 ID 및 검색어에 대해 다음과 같은 변수를 만듭니다.
var subscriptionKey = "YOUR-SUBSCRIPTION-KEY"; var customConfigId = "YOUR-CUSTOM-CONFIG-ID"; var searchTerm = args.Length > 0 ? args[0]:"microsoft";
검색어를
q=
쿼리 매개 변수에 추가하고 검색 인스턴스의 사용자 지정 구성 ID를customconfig=
매개 변수에 추가하여 요청 URL을 구성합니다. 매개 변수를 앰퍼샌드(&
)로 분리합니다.url
변수 값의 경우 다음 코드에서 글로벌 엔드포인트를 사용하거나 리소스의 Azure Portal에 표시되는 사용자 지정 하위 도메인 엔드포인트를 사용할 수 있습니다.var url = "https://api.cognitive.microsoft.com/bingcustomsearch/v7.0/search?" + "q=" + searchTerm + "&" + "customconfig=" + customConfigId;
검색 요청 보내고 받기
요청 클라이언트를 만들고 구독 키를
Ocp-Apim-Subscription-Key
헤더에 추가합니다.var client = new HttpClient(); client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
검색 요청을 수행하고 응답을 JSON 개체로 가져옵니다.
var httpResponseMessage = client.GetAsync(url).Result; var responseContent = httpResponseMessage.Content.ReadAsStringAsync().Result; BingCustomSearchResponse response = JsonConvert.DeserializeObject<BingCustomSearchResponse>(responseContent);
결과 처리 및 보기
응답 개체를 반복하여 해당 이름, URL 및 웹 페이지가 마지막으로 크롤링된 날짜를 포함하는 각 검색 결과에 대한 정보를 표시합니다.
for(int i = 0; i < response.webPages.value.Length; i++) { var webPage = response.webPages.value[i]; Console.WriteLine("name: " + webPage.name); Console.WriteLine("url: " + webPage.url); Console.WriteLine("displayUrl: " + webPage.displayUrl); Console.WriteLine("snippet: " + webPage.snippet); Console.WriteLine("dateLastCrawled: " + webPage.dateLastCrawled); Console.WriteLine(); } Console.WriteLine("Press any key to exit..."); Console.ReadKey();