티스토리 뷰

0. 주저리주저리

우선 API만 사용할 줄 알아도 꽤나 쓸만한 app을 만들 수 있다. 그런 점에서 100% 꿰뚫고 있어야 한다! 까지는 아니고 대충 어떤 원리로 동작하는지, 그 정도만 조금 알아도 필요할 때 바로 습득해서 사용할 수 있을 것 같다고 생각했다. 그러기에는 xml, json에 대해서 간단한 지식이 있어야 하고 http의 GET방식 등이나 이런 것에 조금 기초 지식이 있으면 좋을 것 같다.

 

Google은 조금 복잡해서 차차 써보기로하고 간단한 naver부터 해보았다.

 

1. Naver API 사용하기

developers.naver.com/

 

NAVER Developers

네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음

developers.naver.com

이곳에 가면 볼 수 있다.

가장 먼저 애플리케이션 등록(API 이용신청)을 하자

 

 

 

출처 developer.naver.com

애플리케이션 이름은 간단히 code project만드는 것처럼 짓고 싶은 이름으로 만들자,

사용 API는

네이버 아이디로 로그인,

데이터랩(검색어 트렌드, 쇼핑 등),

카페,

캘린더,

검색,

캡차(음성, 이미지),

파파고,

등 많다.

 

필요한 것을 선택해보자

 

비로그인 오픈 API도 크게 중요하지 않으니 적당히 입력하자.

 

애플리케이션을 등록하고 나면

'내 애플리케이션'에 애플리케이션 정보가 있다.

Client ID, Client Secret가 적혀있고, Open API 일일 사용량을 볼 수 있다.

출처 developer.naver.com

이 Client ID와 Client Secret를 잘 기억하자,

 

 

2. C# code 작성

예제는 아주 잘 나와있다.

developers.naver.com/docs/search/blog/

 

검색 API 블로그 검색 개발가이드

NAVER Developers - 검색 API 블로그 검색 개발가이드

developers.naver.com

검색 중에서도 블로그를 예로 들어보겠습니다.

 

코드의 내용을 보면 정말 간단하다,

단순히 query (검색어)를 만들고, 정해진 포맷의 url로 작성한다.

 

그리고 Http요청을 위해서 C#의 HttpWebRequest 객체를 만들고 HttpWebResponses로 받은 뒤 Stream을 열어 StreamReader로 값을 읽으면 끝이다.

사실 이런 Http 관련 class는 평소 잘 사용하지 않기 때문에 사용방법을 잘 모른다. 그런데 문서화 및 다른 블로그에서 사용방법을 잘 올려놓았기 때문에 사용에는 큰 무리가 없었고 직관적이어서 좋았다.

 

using System;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Xml;   //for xml parsing

namespace APITest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btn_search_Click(object sender, EventArgs e)
        {
            //search 

            string clientId = "MyclientID";//from naver
            string clientSecert = "MyClientSecret"; //from naver

            try {
                string query = text_search.Text;
                
                //xml format
                string url = "https://openapi.naver.com/v1/search/blog.xml?query="+query;

                /*
                 * JSON format
                 * string url = "https://openapi.naver.com/v1/search/blog?query"+query;
                 */

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Headers.Add("X-Naver-Client-Id", clientId);
                request.Headers.Add("X-Naver-Client-Secret", clientSecert);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                string status = response.StatusCode.ToString();

                if(status == "OK")
                {
                    Stream stream = response.GetResponseStream();
                    StreamReader sr = new StreamReader(stream, Encoding.UTF8);

                    text_result.Text = sr.ReadToEnd();
                    //parsing phase
                    string parsed_ret="";

                    XmlDocument xmldata = new XmlDocument();
                    xmldata.LoadXml(text_result.Text);

                    XmlElement root = xmldata.DocumentElement;

                    XmlNodeList nodelist = root.ChildNodes;

                    foreach (XmlNode nodeitem in nodelist){
                        for (int i = 0; i < nodeitem.ChildNodes.Count; ++i){
                            if (nodeitem.ChildNodes[i].Name == "item")
                                parsed_ret += nodeitem.ChildNodes[i]["title"].InnerText + "\r\n " + nodeitem.ChildNodes[i]["description"].InnerText + "\r\n\r\n";
                        }
                    }

                    text_parsed.Text = parsed_ret;
                    sr.Close();
                    stream.Close();
                }
                else
                {
                    MessageBox.Show("Error occured! :" + status);
                }
            }
            catch (Exception ee){
                MessageBox.Show(ee.ToString());
            }


        }
        
    }
}

 

 

위의 코드는 xml형태로 요청해서 xml값을 받은뒤 적당히 필요한 부분만 파싱도 한다.

winform을 사용해서 구현했다.

 

아마 코드를 보면 어떤 흐름으로 프로그램이 진행되는지 이해하기 더 쉬울 겁니다.

Http요청을 만들어서 보내고 response를 받고, status가 정상이면 그 데이터를 사용하는 방식입니다.

 

검색어를 '스시'로 해서 검색해본 결과

Open API사용 결과

위의 Result는 XML그대로 즉, response그대로 출력한 것이고, 밑의 Result는 그나마 쓸만한 title, description tag의 내용만 추출한 것이다. 도중에도 bold tag가 있어서 보기는 싫지만.. 

 

Response

위의 사진은 Response를 Chrome에서 열어본 것이다.(XML임)

channel이라는 root안에 Item들이 들어있고 거기에 title, link등 간단히 소개하는 description들이 있다. 여기서 필요한 부분을 파싱해주자,

 

내용을보면...

솔직히 blog 검색 api는 어디 응용해야 할지 잘 모르겠다. 다음엔 파파고를 한번 사용해봐야겠다.

 

 

댓글
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Total
Today
Yesterday