2013-07-04 70 views
0

我們正在嘗試在本地重新創建一些活動API的響應以用於測試目的。'假'用於測試的API響應

我們正在嘗試構建一個非常基本的PHP副本,以JSON響應Ajax請求。下面的代碼是我現在將它作爲字符串返回並且另一端的錯誤會引發錯誤:

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

代碼:

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

我們已經測試並與現場API的工作。所以當我試圖返回虛擬JSON數據時,我做錯了。現在據我所知,這不是一個有效的JSON響應,是否有一種方法可以像上面那樣輕鬆地「僞造」響應?

+1

您可以使用高速緩存http代理 – hek2mgl

+0

+1作爲反向高速緩存代理。通過這種方式,您可以創建一些示例請求,然後在調試和刷新時無需擔心大量的API調用。 –

+1

相關:http://httpbin.org/ – zerkms

回答

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));  
+2

對於「內容類型」設置+1 ...始終始終總是讓我。 – esqew

+4

還有'json_encode'可以讓每個人都更輕鬆。 –

+0

@HalfCrazed:哈哈,只是補充一點。 – sberry

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. 

就是這樣!