0

RESTfulAPIに接続する必要があります。会社がAPIに接続するために私に与えた唯一の例は、Pythonの例です。私は言語を理解していませんが、PHPには慣れています。cuRLやPHPでこれを行う方法はありますか?

Pythonの例を次に示します。

import requests
import hmac
import hashlib
import datetime as dt
import simplejson as json
import sys


tech_prefix = '' #the Account Tech Prefix
secret_key = '' #the API Key


#creating URI info
t = dt.datetime.utcnow().replace(microsecond=0)
timestamp = t.isoformat()
url_scheme = 'https'
net_location = 'api.thesite.com'
path = '/v1/available-tns/npas/'
method = 'GET'
ordered_query_params = ''
body = ''
body_md5 = ''
canonical_uri = url_scheme + "://" + net_location + path + "\n" + ordered_query_params
tokens = (
    timestamp,
    method,
    body_md5,
    canonical_uri
    )
message_string = u'\n'.join(tokens).encode('utf-8')
signature = hmac.new(secret_key, message_string, digestmod=hashlib.sha1).hexdigest()

headers = {'X-Timestamp':timestamp}
request_url = url_scheme + '://' + net_location + path + '?' + ordered_query_params #    append ordered query params here
request = requests.get(request_url,auth=(tech_prefix,signature),headers=headers)
print request
4

2 に答える 2

2

はい、PHPでこれを行うことができます。このPythonコードは、特別なPythonライブラリを使用していません。特定のヘッダーと特定の認証情報を含むHTTPリクエストを送信するだけです。ただし、実際にこのコードをPythonからPHPに変換することは、一般的なStackOverflowの回答の範囲外です。

于 2013-03-06T00:58:33.833 に答える
0

まず、「インポート」は単なる外部ライブラリであり、PHPにはそれらが組み込まれています。トークンまでのすべては単なる変数です。日付と時刻のメソッドはすべて、PHPで同様の関数を持っています。その場合、「トークン」は単なる配列です。次に、「message_string」には、Javascriptで見られるものと同様の「join」メソッドと「encode」メソッドがあります。「署名」は少し紛らわしいですが、基本的に暗号化を行い、PHPにも同様の機能があります。Pythonは十分に文書化されているので、Pythonの関数を調べると、どのPHP関数が類似しているかがわかるはずです。「署名」の後は、すべての変数をHTTPリクエストにアセンブルして送信するだけです。

Python、およびPHP(およびjavascript)はCベースの言語です。あなたが一方に長けているなら、あなたが良い参考資料を持っている限り、あなたはもう一方を理解することができます。また、前述のように、Pythonは十分に文書化されているため、Pythonのメソッドまたは関数をGoogleで検索すると、同等のPHPを見つけるために必要な情報が表示されます。

APIを操作するのは決して楽しいことではありませんが、不可能ではありません。それらのほとんどは、アセンブルする必要のある単なるHTTPリクエストに分解され、応答を分析します。ちょっとしたコツですが、APIのドキュメントやフォーラム(ある場合)で見つけることができる場合もあれば、テクニカルサポートからHTTPリクエストの例が送られてくる場合もあります。次に、PHPでビルドできます。

最後に、言語間の変換方法を学ぶのは良いことです。これは初めての経験のようですが、ほとんどのWeb開発者は、定期的にさまざまな言語(python、c ++、asp、rubyなど)でこれに遭遇します。私が過去に遭遇したことに基づいて、あなたのものは変換するのがかなり簡単です。私が使用しなければならなかった最後のAPIの例として、それがあればよかったのにと思います。

于 2013-03-06T04:43:11.217 に答える