标准化JSON响应

时间:2012-10-04 23:22:26

标签: php json

我有一个应用程序,其中来自数据库的信息作为JSON响应发回。

调整jQuery方面来处理每一个响应似乎需要付出很多努力才能适应性差。

JSON格式在哪些方面可以标准化?另外,有没有办法在jQuery中“插入”处理程序?

我一直在想这样的事情:

{
"replyCode": "OK"/"Error",
"replyMessage": "Operation successful"/"Could not connect",
"returnData": ... // Entities go here
}

3 个答案:

答案 0 :(得分:2)

标准化JSON响应是需要为每个应用程序定制的东西;只有您拥有必要的数据才能准确确定应支持哪些操作以及如何通过JSON进行通信。

作为一个例子,在过去,我使用了“响应嗅探器”逻辑(处理程序检查响应中的特定属性并处理以特定方式存在的每个属性)和“命令列表”逻辑(在这种情况下,响应总是包含描述必须采取的特定操作并且处理程序执行它们的对象数组。

我认为在大多数情况下都不需要回复代码和消息,因为HTTP响应标头可以有效地传达此信息。

无论您决定做什么,.ajaxComplete(及其兄弟.ajaxSuccess.ajaxError)都可用于在每个请求完成时运行的客户端安装全局响应处理程序。

答案 1 :(得分:2)

首先,你应该看看来自apigee家伙的视频RESTful API Design。它包含大量RESTful API的好建议。布莱恩·穆洛伊(Brian Mulloy)也提供了关于回应应该如何的反馈意见。

接下来,你应该看看php中的一些libs来开发RESTful API。其中一些为您提供了如何返回响应的可靠方法。

有了这个,你应该很好地构建RESTful API。

答案 2 :(得分:1)

为什么没有一个中心函数来完成JSON的最终回显作为响应。

function returnJSON($code,$data=array()){
  echo json_encode(
    array(
      'replyCode'=>$code,
      'replyMessage'=>getReturnMessageByCode($code),
      'returnData'=>$data
    )
  );
}

现在,在您检索此数据的每个AJAX调用结束时,您的PHP代码将执行类似的操作 -

$data = fetchData();
if ($data){
  returnJSON('OK',$data);
}else{
  returnJSON('FAIL');
}
exit();

标准化您的回复是一个好主意,也是您的责任。除非您的框架有其他选项,否则可以使您的代码尽可能健壮。