0

我真的不明白这个 API 应该如何工作,因为我以前从未使用过 JSON。

该文档没有提供任何示例,但它说此 API 中的端点支持 POST 和 GET 操作,返回 JSON。

我的问题是,我不确定如何实现这一点,假设我只想将所有数据提取到一个简单的页面中,例如:

城市: 塞勒姆

邮编: 97302

ETC...

我不太确定从哪里开始:

POST http://[您的 RepMan 主机名]/api/v1/account/reputation/current.json

GET 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
    }
}
}
}
4

3 回答 3

5

首先要尝试的是在您的网络浏览器中尝试一些请求。从那里,应该很清楚你需要做什么。

从您的基本 URL 开始:

http://[your RepMan hostname]/api/v1/account/reputation/current.json

显然,您必须插入您的主机名来代替[your RepMan hostname]. 从那里,让我们添加一个查询字符串。?您以前见过这些...它们位于 URL 中的问号之后,并包含key1=value1&key2=value2. 插件有 4 个变量: pidapiKeysridcustomerId. 在不知道这个 Web 服务的作用的情况下,很难帮助您知道要插入哪些值,但这里有一个示例:

http://example.com/api/v1/account/reputation/current.json?pid=12345&apiKey=asdf&srid=34&customerid=98765

使用您想要的参数手动构建自己的工作 URL,并在浏览器中尝试。完成此操作后,您将看到一些文本结构以JSON 格式返回。这是与 JavaScript 解析器兼容的文本,但实际上与 JavaScript 是分开的。

现在,您如何在 PHP 中实现这一点?一种快速的方法是使用file_get_contents()and 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()构建您的查询字符串。这样,空格等保留字符将被转换为其编码形式,例如%20.

于 2013-05-28T18:02:36.343 回答
2

URL 描述了实体:

http://[您的RepMan 主机名]/api/v1/account/reputation/current.json - 用户当前的信誉

使用 HTTP GET,您可以检索(获取)有关实体的数据。

使用 HTTP POST,您可以向 API提交(发布)有关实体的数据(更新或创建新实体)。

要做到这一点,只需使用 curl,如许多其他地方所述: php: Get url content (json) with cURL

于 2013-05-28T18:02:10.637 回答
0

这看起来像一个基于 REST 的 Web 服务。API 说您可以使用两种 HTTP 方法:

  • 得到
  • 邮政

GET 请求位于 URL 中,例如可以从 Web 浏览器调用,如下所示:

http://host//api/v1/account/reputation/current.json?pid={some partner ID}&nextkey={next value}...

问号 (?) 表示参数列表开始。与号 (&) 分隔参数。参数采用 key=value 格式。

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

http://en.wikipedia.org/wiki/JSON

HTTP-Get 和 HTTP-POST 有什么区别,为什么 HTTP-POST 在安全性方面较弱

于 2013-05-28T18:03:22.320 回答