Python で POST 経由で Freebase の mqlread リクエストを送信することは可能ですか? ドキュメントを検索しようとしましたが、すべてが GET を参照しています。ありがとう。
質問する
185 次
2 に答える
3
可能です。
POST
a を発行し、特定のヘッダーを追加する必要があります (基本的に、サーバーに のコンテンツでX-HTTP-Method-Override: GET
をエミュレートするように指示します)。特に私にとっては、を使用しました。GET
POST
Content-Encoding: application/x-www-form-urlencode
それが役立つ場合、これが私のコード(coffeescript)の関連部分です:
mqlread = (query, queryEnvelope, cb) ->
## build URL
url = urlparser.format
protocol: 'https'
host: 'www.googleapis.com'
pathname: 'freebase/v1/mqlread'
## build POST body
queryEnvelope ?= {}
queryEnvelope.key = config.GOOGLE_API_SERVER_KEY
queryEnvelope.query = JSON.stringify query
options =
url: url
method: 'POST'
headers:
'X-HTTP-Method-Override': 'GET'
'User-Agent': config.wikipediaScraperUserAgent
timeout: 3000
form: queryEnvelope
## invoke API
request options, (err, response, body) ->
if err then return cb err
if response.statusCode != 200
try
json = JSON.parse(body)
errmsg = json?.error?.message or "(unknown JSON)"
catch e
errmsg = body?[..50]
return cb "#{response.statusCode} #{errmsg}"
r = JSON.parse response.body
decodeStringsInResponse r
cb null, r
于 2013-09-20T04:32:20.320 に答える
0
MQLread では POST がサポートされていないと思いますが、HTTP バッチ機能を使用できます。
Python での例を次に示します。
https://github.com/tfmorris/freebase-python-samples/blob/master/client-library/mqlread-batch.py
于 2013-09-19T23:45:09.163 に答える