0

テスト目的で、ライブ API からの応答の一部をローカルで再作成しようとしています。

JSON で Ajax リクエストに応答する非常に基本的な PHP レプリカを構築しようとしています。以下のコードは、現在文字列として返されているもので、もう一方の端でエラーがスローされます。

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

コード:

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

テスト済みで、ライブ API で動作します。したがって、ダミーの JSON データを返そうとするときに間違っていることがあります。私が知る限り、これは有効な JSON 応答ではありません。上記のような応答を簡単に「偽造」する方法はありますか?

4

2 に答える 2

8

それは有効なjsonではありません。引用符を逆にします。外側はシングル、内側はダブル。

また、正しい content-type ヘッダーを返す必要がある場合もあります。

$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

テストをローカルに保つには、API に依存するスクリプトをテストするために構築された非常に軽量なサーバーであるJaqenを使用できます。

リクエストに直接応答するように設定します。

例えば:

# 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 に答える