2015/03/02
いつもgooラボAPIをご利用いただきありがとうございます。
gooラボAPIはHTTPSでのPOSTリクエストを受け付けていますが、GETリクエストに比べるとちょっと面倒な部分もあるのではないかと思います。そこで、HTTPSで"application/json"のPOSTリクエストを送信する方法を簡単にご紹介いたします。
ご紹介する言語・コマンドは、APIへのご利用アクセスのユーザエージェントを参考に、利用上位のRuby・curl・Pythonとオマケにwgetとしました。
それぞれの手法について、形態素解析APIを用いて"日本語解析"という文章を解析するサンプルをご説明します。どのサンプルでもapp_idのところは伏字になっていますので、実際に使用する際はAPI利用登録ページで取得したapp_idに置き換えてください。
リクエスト、レスポンスのパラメータについては、形態素解析APIの説明ページをご参照ください。
Rubyを用いた場合のコードサンプルが下記になります。2.0~2.2で動かすことを想定しています。
https.use_ssl=trueを忘れるとHTTPアクセスとなって失敗しますのでご注意ください。(試しているときにハマりました……)
# encoding: utf-8 require 'net/https' require 'json' app_id = "XXXXXXXXXX" request_data = {'app_id'=>app_id, "sentence"=>"日本語解析"}.to_json header = {'Content-type'=>'application/json'} https = Net::HTTP.new('labs.goo.ne.jp', 443) https.use_ssl=true responce = https.post('/api/morph', request_data, header) puts responce.body
curlを用いた場合のコマンド入力サンプルが下記になります。
"-X"の大文字なのでご注意ください。(小文字にしてしまうとproxy設定オプションになるのでエラーとなります)
curl -H "Content-type: application/json" -X POST -d '{"app_id":"XXXXXXXXXX", "sentence":"日本語解析"}' 'https://labs.goo.ne.jp/api/morph'
Pythonではpipでインストールできるgoolabsライブラリを作成していただいているので、そちらを使うことで簡単に利用可能です。(ありがとうございます!!)
詳しい使い方はライブラリの説明ページを見ていただいた方が確実ですが、簡単なコードサンプルが下記になります。(レスポンスがdictにパースされているため、prettyprintライブラリを使用して出力しています)
# coding: utf-8 from goolabs import GoolabsAPI from prettyprint import pp app_id = "XXXXXXXXXX" api = GoolabsAPI(app_id) response = api.morph(sentence=u"日本語解析") pp(response)
goolabsライブラリ付属のコマンドラインツールを使用したコマンド入力のサンプルが下記になります。curlを使用した場合に比べ、大分シンプルに実行できます。
export GOOLABS_APP_ID=XXXXXXXXXX goolabs morph 日本語解析
curlを用いた場合のコマンド入力サンプルが下記になります。"-O"は大文字になるのでご注意ください。(小文字にするとログ出力オプションになってしまいます)
wget -O - -q --header="Content-type: application/json" --post-data='{"app_id":"XXXXXXXXXX", "sentence":"日本語解析"}' 'https://labs.goo.ne.jp/api/morph'
上記以外でも、PowerShellを用いた方法などもご紹介いただいています。
快適なAPIライフをお送りください。