将python API示例转换为PHP

将python API示例转换为PHP,php,python,api,rest,curl,Php,Python,Api,Rest,Curl,我需要连接到RESTful API。公司给我的唯一一个连接到他们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

我需要连接到RESTful API。公司给我的唯一一个连接到他们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

是的,您可以在PHP中执行此操作。此python代码不使用任何特殊的python库;它只是发送一个带有特定头和特定身份验证信息的HTTP请求。实际上,将这段代码从python翻译成PHP超出了典型StackOverflow回答的范围。

首先,“导入”只是外部库,PHP内置了它们。token的所有内容都只是变量。date和time方法在PHP中都有类似的函数。那么“令牌”只是一个数组。然后,“message_string”有一个“join”和“encode”方法,这与Javascript中的方法类似。“签名”有点混乱,但它基本上是加密的,PHP也有类似的功能。Python有很好的文档记录,因此请查找Python的函数,然后您应该能够找出哪一个PHP函数是类似的。在“签名”之后,它只是将所有变量组合到HTTP请求中并发送它

Python和PHP(以及javascript)都是基于C的语言。如果你擅长其中一个,你可以找出另一个,只要你有好的参考资料。正如前面提到的,Python有很好的文档记录,因此在Google中搜索Python方法或函数应该会找到您需要的信息,以找到它的PHP等价物

使用API从来都不是件有趣的事,但它们也不是不可能的。它们中的大多数被分解为一个HTTP请求,您必须组装它,然后解析响应。一个小技巧,有时你可以在API的文档中,或者在他们的论坛上(如果他们有)或者技术支持会发给你一个HTTP请求应该是什么样子的例子。然后就可以用PHP构建它了


作为结束语,学习如何在语言之间进行转换是一件好事。听起来这是您第一次体验它,但是大多数Web开发人员经常这样做,并且使用各种不同的语言(Python、C++、ASP、Ruby、ECT)。根据我过去遇到的情况,你的是一个相当简单的转换。我很想把它作为我必须使用的最后一个API的例子。

+1为了确保这是可能的,但没有这样做。谢谢,我经常使用curl,但是这个API身份验证需要给API密钥加时间戳和散列,发送回响应代码,我丢失了。我想我确实需要将这段代码转换为php或基于这段代码的curl示例。