[Cognitive Service] Bing Image Search 사용법

마이크로소프트 Cognitive Services 중에 Bing Image Search 사용법에 대한 내용이고 상세한 내용은 가이드 문서를 참고하면 된다.

키 발급 절차

  1. Cognitive Service API 사이트에 접속
  2. 마이크로소프트 계정으로 로그인
  3. 로그인하면 Subscription 페이지가 보이는데 여기서 키를 발급 받는다.
  4. (무료로 제공되는 범위를 넘어서면 Azure Portal 에서 키를 만들어서 사용하면 Azure 구독과 계정으로 과금된다.)

사용법

HTTP Get 요청을 보내면 바로 결과를 받을 수 있다.

  • Base URL: https://api.cognitive.microsoft.com/bing/v5.0/images/search
  • HTTP Method: GET
  • Query String
    • q : {검색어}
    • mkt: ko-kr, en-us
    • count: {요청개수}
    • offset: {시작번호}
    • 이외 상세 내용은 문서 참조
  • Header: Ocp-Apim-Subscription-Key / {발급받은 Key}

샘플 URL: https://api.cognitive.microsoft.com/bing/v5.0/images/search?q=2017+대선후보&count=20&offset=0&mkt=ko-kr

테스트 및 결과

테스트는 PostMan 같은 툴을 사용하면 된다. 결과는 Json으로 나온다.

복잡한 Json 결과 샘플을 보는 것 보다 Json을 C# 클래스로 변환하는 방법을 사용하여 구조를 살펴보면 다음과 같다.

public class Instrumentation
{
    public string pageLoadPingUrl { get; set; }
}

public class Thumbnail
{
    public int width { get; set; }
    public int height { get; set; }
}

public class Image
{
    public string name { get; set; }
    public string webSearchUrl { get; set; }
    public string thumbnailUrl { get; set; }
    public string datePublished { get; set; }
    public string contentUrl { get; set; }
    public string hostPageUrl { get; set; }
    public string contentSize { get; set; }
    public string encodingFormat { get; set; }
    public string hostPageDisplayUrl { get; set; }
    public int width { get; set; }
    public int height { get; set; }
    public Thumbnail thumbnail { get; set; }
    public string imageInsightsToken { get; set; }
    public string imageId { get; set; }
    public string accentColor { get; set; }
}

public class RootObject
{
    public string _type { get; set; }
    public Instrumentation instrumentation { get; set; }
    public string webSearchUrl { get; set; }
    public int totalEstimatedMatches { get; set; }
    public List<Image> Images{ get; set; }
    public int nextOffsetAddCount { get; set; }
    public bool displayShoppingSourcesBadges { get; set; }
    public bool displayRecipeSourcesBadges { get; set; }
}