json API中的计算字段?

时间:2016-11-02 11:41:21

标签: javascript php rest api json-api

我想知道我们应该在可以从原始数据和额外可用信息(来自浏览器会话,用户界面......或其他任何方面)计算的API值中添加哪个范围

例如,我们可以让API返回此JSON:

{
    ownder_id: '123',
    canAddComment: true,
    etc...
}

这给了我们价值" canAddComment"直。 或者我们可以拥有这个:

{
    ownder_id: '123',
    etc...
}

其中,可以从owner_id计算评论。例如,如果会话owner_id与从API收到的会话不同,则用户可以添加注释。

我们可以在Javascript中完成此操作:

//supposing we have a session object with our browser session values
var params = {owner_id: session.owner_id};
$.post(apiURL, params, function(data){
    var result = JSON.parse(data);

    //processing the data
    result["canAddComments"] = result.owner_id !== session.owner_id;

    //do whatever with it
});

最好的方法是什么?在这种情况下推荐的是什么?

1 个答案:

答案 0 :(得分:0)

我不确定你想知道什么。但我的第一反应是你用它来制作一个功能。

// constructor
function Comment() {
  this.owner_id;
  this.canAddComment = function() {
    return session.user_id === this.owner_id;
  }
}

var session = {
  user_id: 22,
  name: 'Kevin'
};

var my_comment = new Comment();
my_comment.owner_id = 15;
if(my_comment.canAddComment()) {
  $.ajax({
    // now read the form and submit the data ...
  })
}
else {
  alert('Only the author of this message can update ...');
}

编辑:

  
    

我的问题主要是,如果最好在后端计算,或在检索API数据后计算。

  

不确定是否有通用答案。一些参数:如果您希望该方法保密,则必须在服务器端执行此操作。在其他情况下,我认为让客户端PC使用其处理能力是完全合理的。

好的,一个例子:排序。假设有一个充满数据的表格;点击头部按照该列对表格进行排序。将所有数据发送到服务器,让它对表进行排序并返回一组键是否有意义?不,我认为让客户处理这个更有意义。 http://tablesorter.com/docs/

与谷歌地图类似:您将标记拖动到某个地方,然后程序必须计算最近的5个公交站点。好吧,显然你在客户端计算所有这些。