';假的';用于测试的API响应


'Fake' an API response for testing

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

我们正在尝试构建一个非常基本的PHP副本,用JSON响应Ajax请求

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

代码:

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

我们已经进行了测试,它可以与API一起使用。因此,我在尝试返回伪JSON数据时出错了。现在,据我所知,这不是一个有效的JSON响应,有没有一种方法可以像我上面所说的那样轻松地"伪造"响应?

这不是有效的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));    

要使测试保持在本地,您可以使用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.

就是这样!