Ajax에서 Same-Origin Policy를 넘어 XML WebAPI 및 RSS 정보를 얻습니다.

하고 싶은 일



WebAPI를 두드리고 싶다. Yahoo! JAPAN 일본어 형태소 해석 API
RSS를 로드하고 싶습니다. Yahoo! 뉴스 RSS
//불행히도 Yahoo! 뉴스 API는 없습니다 ...

이것을 빨리 Ajax에서 하고 싶다.
주로 해커슨이나 해커슨이라든지 우선은 아이디어를 형태로 하는 것이 중요할 때.

슬픈 일



이 녀석들 XML 밖에 돌려주지 않는다. (RSS는 원래 그런 것입니다만)
=> Same-Origin Policy에서 이끼

슬픈

피해 보았다.



일본어 형태소 분석 API



복사하고 YOUR_APP_ID를 다시 쓰고 브라우저에 던지면 이런 느낌.


잡혔다!

Yahoo! 뉴스 RSS



RSS 중에서 주제를 선택하여 URL 교체
diff --git a/call_webapi_which_return_xml_with_ajax.html b/call_webapi_which_return_xml_with_ajax.html
index 822831e..af8c10b 100644
--- a/call_webapi_which_return_xml_with_ajax.html
+++ b/call_webapi_which_return_xml_with_ajax.html
@@ -20,14 +20,7 @@
        $.ajax({
          // [NOTE] 使いたいAPIのURI, ここではYahoo! JAPAN 形態素解析API
          // http://developer.yahoo.co.jp/webapi/jlp/ma/v1/parse.html
-         url: 'http://jlp.yahooapis.jp/MAService/V1/parse',
-         data: {
-           // [NOTE] APIに渡したいパラメータ
-           // APPIDはhttps://e.developer.yahoo.co.jp/dashboard/ から取得
-           "appid": "<YOUR_APP_ID>",
-           "results": "ma,uniq",
-           "sentence": "庭には二羽ニワトリがいる。"
-         },         
+         url: 'http://news.yahoo.co.jp/pickup/rss.xml',
          type: 'GET',
          dataType: "xml",
          cache: false, // キャッシュOFF



잡혔다!

사용한 것


  • jQuery
  • jquery.xdomainajax.js
  • jquery.xml2json.js (XML을 JSON으로 변환하지 않으면 필요 없음)

  • 보충



    Q. 어떻게 하는 거야
    YQL 라고 하는 Web 자원을 SQL 라이크에 취득할 수 있는 플랫폼이 있어 백엔드를 경유하는 형태가 되므로 Same-Origin Policy 관계 없게 된다.
    jquery.xdomainajax.js가 jQuery의 ajax 메소드를 YQL을 통과하도록 래핑합니다.

    json이거나 get 메소드가 아닌 경우 래핑하지 않는 ajax 메소드가 호출됩니다.
    jquery.xdomainajax.js#L29

    Q. 왜 jQuery?
    처음에 이 문제에 직면하고 있던 코드가 jQuery 사용하고 있었기 때문에.
    YQL의 엔트리 포인트에 URL을 던지면 좋기 때문에 자전 구현도 충분히 가능.

    Q. gist는 도서관?
    라이브러리가 아닙니다. 거의 "jquery.xdomainajax.js를 사용해 보았습니다."

    Q. 다른 API에서도 사용할 수 있습니까?
    url과 data를 다시 쓰면 무엇이든 사용할 수 있을 것이다. 적어도 get 메소드라면.

    Q. CORS라던가
    서버 측이 대응하지 않으면 안되고, 원래 그런 생각을 하고 싶지 않은 때용.

    요약



    YQL을 래핑한 jquery.xdomainajax.js에서 Same-Origin Policy 문제를 피해 보았습니다.
    성실하게 만드는 서비스로 사용할 수 있을지는 어쨌든, 우선은 움직이고 싶다고 때로는 도움이 되지 않을까.

    좋은 웹페이지 즐겨찾기