JSON-RPC 公開クラスからカスタム エラーを返す適切な方法を探しています。
JSON-RPC には、エラー状態を報告するための特別な形式があります。すべてのエラーは、最低限、エラー メッセージとエラー コードを提供する必要があります。オプションで、バックトレースなどの追加データを提供できます。
エラー コードは、XML-RPC EPI プロジェクトで推奨されているものから派生しています。Zend\Json\Server は、エラー状態に基づいてコードを適切に割り当てます。アプリケーション例外の場合、コード「-32000」が使用されます。
ドキュメントのサンプル コードの除算メソッドを使用して説明します。
<?php
/**
* Calculator - sample class to expose via JSON-RPC
*/
class Calculator
{
/**
* Return sum of two variables
*
* @param int $x
* @param int $y
* @return int
*/
public function add($x, $y)
{
return $x + $y;
}
/**
* Return difference of two variables
*
* @param int $x
* @param int $y
* @return int
*/
public function subtract($x, $y)
{
return $x - $y;
}
/**
* Return product of two variables
*
* @param int $x
* @param int $y
* @return int
*/
public function multiply($x, $y)
{
return $x * $y;
}
/**
* Return the division of two variables
*
* @param int $x
* @param int $y
* @return float
*/
public function divide($x, $y)
{
if ($y == 0) {
// Say "y must not be zero" in proper JSON-RPC error format
// e.g. something like {"error":{"code":-32600,"message":"Invalid Request","data":null},"id":null}
} else {
return $x / $y;
}
}
}
$server = new Zend\Json\Server\Server();
$server->setClass('Calculator');
if ('GET' == $_SERVER['REQUEST_METHOD']) {
// Indicate the URL endpoint, and the JSON-RPC version used:
$server->setTarget('/json-rpc.php')
->setEnvelope(Zend\Json\Server\Smd::ENV_JSONRPC_2);
// Grab the SMD
$smd = $server->getServiceMap();
// Return the SMD to the client
header('Content-Type: application/json');
echo $smd;
return;
}
$server->handle();
psはい、Google検索を試しました。