我真的不明白这个API应该如何工作,因为我之前从未使用过JSON。
该文档没有提供任何示例,但它表示此API的终点支持POST和GET操作,返回JSON。
我的问题是,我不确定如何实现这一点,假设我只是想把所有数据都放到一个简单的页面中,如下所示:
城市 Salem
邮政编码: 97302
等...
我不太清楚从哪里开始:
POST http:// [您的RepMan主机名] /api/v1/account/reputation/current.json
获取http:// [您的RepMan主机名] /api/v1/account/reputation/current.json
以下是POST正文或GET查询字符串的参数列表。所有值都应按照普通的POST正文或GET查询字符串进行正确编码。
| Field | Ordinality | Datatype | Description
| pid | 1 | string | This is your partner ID as provided by us to access the API.
| apiKey | 1 | string | This is your API Key as provided by use to access the API.
| srid | ? | string | This is the unique RepMan ID for the account. Either this or customerId must be specified.
| customerId | ? | string | This is your unique customer id for the account. Either this or srid must be specified.
对于200响应,您将收到以下JSON内容:
{
account : {
srid : "DW5SRB36",
lastName : "Morimoto",
pid : "SRP",
customerId : null,
firstName : "Masaharu"
},
company : {
city : "New York",
postalZip : "10011",
provState : "NY",
name : "Morimoto",
address : "88 10th Ave"
},
visibility : {
found : 18,
missing : 9
},
reviews : {
1star : 5,
4star : 37,
3star : 44,
5star : 66,
2star : 5
},
competition : {
Restaurants in New York : {
Megu : 1.82,
Morimoto: 52.95,
Matsuri : 18.13,
Buddakan: 0.93,
Nobu : 26.17
}
},
social : {
checkins : 5015,
twitter_followers : 8154,
facebook_likes : 1134
},
mentions : {
07-09-2011 : {
positive : 0,
neutral : 0,
negative : 0
},
07-07-2011: {
positive : 2,
neutral : 3,
negative : 0
},
07-05-2011: {
positive : 1,
neutral : 2,
negative : 0
},
07-11-2011: {
positive : 2,
neutral : 2,
negative : 0
},
07-06-2011: {
positive : 5,
neutral : 2,
negative : 0
},
07-10-2011: {
positive : 3,
neutral : 4,
negative : 0
},
07-08-2011: {
positive : 1,
neutral : 5,
negative : 0
}
}
}
}
答案 0 :(得分:5)
首先要尝试在网络浏览器中尝试一些请求。从那里开始,你应该很清楚你需要做什么。
从您的基本网址开始:
http://[your RepMan hostname]/api/v1/account/reputation/current.json
显然,您必须插入主机名代替[your RepMan hostname]
。从那里,让我们添加一个查询字符串。您之前见过这些内容......它们位于网址中的问号?
之后,并且包含key1=value1&key2=value2
形式的键/值对。您有4个要插件的变量:pid
,apiKey
,srid
和customerId
。在不知道这个Web服务的作用的情况下,很难帮助您了解要插入的值,但这是一个示例:
http://example.com/api/v1/account/reputation/current.json?pid=12345&apiKey=asdf&srid=34&customerid=98765
使用您想要的参数手动构建自己的工作网址,并在浏览器中尝试使用。完成后,您会在JSON format中看到一些文本结构。这是与JavaScript解析器兼容的文本,但实际上与JavaScript分开。
现在,你如何在PHP中实现这一目标?一种快捷方法是使用file_get_contents()
和json_decode()
。
$response = file_get_contents('plug your URL in here');
$responseObject = json_decode($response);
print_r($responseObject);
基本上,file_get_contents()
将加载该URL的数据,json_decode()
将获取对象的文本表示并将其转换为真正的PHP对象。从那里你可以echo $responseObject->social->checkins
或类似。
现在,您应该考虑使用cURL而不是file_get_contents()
。它可以让您更好地控制请求,并使您更容易访问响应状态代码。当您希望稍后在该请求上设置时间限制或需要处理故障时,这将非常重要。另外,请确保使用urlencode()
或http_build_query()
来构建查询字符串。这样,reserved characters(例如空格)将转换为其编码形式,例如%20
。
答案 1 :(得分:2)
URL描述实体:
http://[your RepMan主机名] /api/v1/account/reputation/current.json - 用户当前声誉。
使用HTTP GET ,您可以检索(获取)有关实体的数据。
使用HTTP POST ,您可以提交(发布)数据到关于实体的API(更新或创建新实体)。
要做到这一点,只需使用curl,如许多其他地方所解释的那样: php: Get url content (json) with cURL
答案 2 :(得分:0)
这看起来像基于REST的Web服务。 API说你可以使用两种HTTP方法:
GET请求位于一个URL中,例如可以从Web浏览器调用,如下所示:
http://host//api/v1/account/reputation/current.json?pid={some partner ID}&nextkey={next value}...
问号(?)表示参数列表开始。 &符号(&)分隔参数。参数是key =值格式化。
POST请求使用相同的URL,但不是参数,而是捆绑内容:
http://host//api/v1/account/reputation/current.json
然后将HTTP标头“content-type
”设置为“application/json
”。
然后将HTTP标头“accept
”设置为“application/json
”。
然后,使用某些软件(Apache HTTP客户端等),构建并发布JSON格式的消息:
{
pid: "my partner ID"
...
}
参考文献:
http://en.wikipedia.org/wiki/Query_string