'假'用于测试的API响应

时间:2013-07-04 00:30:13

标签: php ajax json

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

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

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

代码:

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

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

2 个答案:

答案 0 :(得分: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));    

答案 1 :(得分: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"}}

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

它建立在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.

那就是它!