[Cognitive Service] Bing Image Search 사용법

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

키 발급 절차

2. Cognitive Service API 사이트에 접속
4. 마이크로소프트 계정으로 로그인
6. 로그인하면 Subscription 페이지가 보이는데 여기서 키를 발급 받는다.
8. (무료로 제공되는 범위를 넘어서면 [Azure Portal](https://portal.azure.com) 에서 키를 만들어서 사용하면 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: {시작번호}
   - 이외 상세 내용은 [문서 ](https://msdn.microsoft.com/en-us/library/dn760784.aspx)참조



- 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; }
}