0

我们正在尝试在本地重新创建来自实时 API 的一些响应以进行测试。

我们正在尝试构建一个非常基本的 PHP 副本,它使用 JSON 响应 Ajax 请求。下面的代码是我现在以字符串形式返回的内容,而另一端的错误会引发错误:

"Uncaught TypeError: Cannot read property 'instanceId' of undefined".

代码:

$var = "{'request':{'instanceId':'1234546','usage':'1'}}";
echo($var);

我们已经过测试,它可以与实时 API 一起使用。因此,在尝试返回虚拟 JSON 数据时我做错了。现在据我所知,这不是一个有效的 JSON 响应,有没有办法用我上面的东西轻松地“伪造”响应?

4

2 回答 2

8

那不是有效的json。颠倒你的报价。外单,内双。

您可能还需要返回正确的内容类型标头。

$var = '{"request":{"instanceId":"1234546","usage":"1"}}';
header("Content-Type", "application/json");
echo($var);

或者更好:

$obj = array("request" => array("instanceId" => "123456", "usage" => "1"));
header("Content-Type", "application/json");
echo(json_encode($obj));    
于 2013-07-04T00:32:23.360 回答
0

为了让您的测试保持在本地,您可以使用Jaqen,这是一个非常轻量级的服务器,用于测试依赖于 API 的脚本。

您可以设置任何您希望它直接响应请求的内容

例如:

# Console request to a Jaqen instance listening at localhost:9000
$ curl 'http://localhost:9000/echo.json?request\[instanceId\]=123456&request\[usage\]=1' -i
=> HTTP/1.1 200 OK
=> Content-Type: application/json
...
=> {"request":{"instanceId":"1234546","usage":"1"}}

有几种方法可以告诉它该做什么,还提供静态文件以允许加载测试页面和资产,请查看文档以获取更多信息。

它基于 node.js 构建,因此非常容易在本地安装和使用。

# To install it (once you have node.js):
$ npm install -g jaqen

# To run it just type 'jaqen' on the console:
$ jaqen
=> Jaqen v1.0.0 is listening on port 9000.
=> Press Ctl+C to stop the server.

而已!

于 2014-07-15T01:10:46.617 回答