2010-12-15 57 views
0

不是一个很好的标题,但我正在寻找更多的指导,已经搜索了不少。我正在构建一个带有MVC框架的Web应用程序(但我认为这是一个更通用的问题)。我试图制作很多视图来执行很多AJAX风格的调用,并说我有一个用户站点,他们可以将文件夹和文件添加到他们的配置文件页面。因此,URL,也许喜欢:REST/JSON/MVC返回值

/profile/{id}

我有一个档案控制器,它返回一个包含各种信息的视图。我希望配置文件中列出的文件和文件夹是动态的,所以我想通过AJAX调用来填充它。我想我会喜欢

/listFolders/{userId}

/listFiles/{folderId}

一个URL是否合理有这些URL返回一个JSON对象,这两个网址,甚至不提供HTML视图(因为对于浏览器来说,视图只是整个配置文件页面)?另外,如果用户/文件夹不存在或当前登录的用户无法访问数据,应该返回哪些错误?设置404或403 HTTP错误代码是否合理?还是需要返回某种HTML?如果有多种原因会导致失败,我想通过它呢?我应该随意选择HTTP错误代码还是定义像0,1,2等整数返回码?另外,如果URL指定它们是JSON,如listFoldersJSON而不是listFolders

回答

0

我在以前的项目中使用过JSON。对于错误,我们返回错误代码。

我们决定这样做是因为我们正在处理API客户端。所以我们想要处理错误代码(REST基于HTTP,因此返回错误代码是合适的)。

由于您正在编写自己的应用程序,因此几乎可以选择将错误发送到视图的方式。你可以创建一个错误的json对象,并且在视图中你必须检查这个对象是否为空。

几乎在一个if-else在视图中。否则,您可以返回错误代码并在将JSON呈现为您想要的任何视图之前检查代码。

我会去错误代码,因为它符合REST哲学。

+0

你是在谈论HTTP错误代码(如404,403等)或用户定义的,如0,1, 2等?感谢您的回复! – user98978979 2010-12-15 02:04:41

+0

HTTP错误代码。 REST基于纯HTTP。 – 2010-12-15 02:29:56

0

一般来说,我通过在状态消息中引发500个内部服务器错误来处理这种情况。大多数客户端库如jQuery提供内置与故障回调处理错误,如:

jQuery.ajax({ 
    success:function(response){ 
     //do some success stuff 
    }, 
    error:function (xhr, ajaxOptions, thrownError){     
     //handle error 
     alert(xhr.responseText); 
     }  
}); 
0

这是完全可行返回JSON对象,而不是实际的看法。

就url而言,您可以使用listFolders和listFiles,而不必考虑JSON。不过,为了服务器的安装方式,我建议您使用小写的网址。例如,我知道在Apache上有时listFiles会很好,但是listfiles会导致缺页异常。

关于错误:您可以在您的JSON响应中设置一个排序头并使用任何您想要的系统。例如,你可以不喜欢

status_code: 0 //where 0 means successful 
status_detail:success! 

哪里,如果是STATUS_CODE其他东西比0,你会检查status_detail并知道要忽略的响应里面的一切。

0

此外,如果用户/文件夹不存在或当前登录的用户无法访问数据,我应该返回哪些错误?

这些都是基本的HTTP错误代码:

  • 401:未经授权
  • 404:找不到

有错误消息的HTTP规范整体转换: HTTP Status Code Definitions


另外,如果URL指定它们是JSON,就像listFoldersJSON而不是listFolders?

一般来说,处理一个很好的办法就是为客户设置了“接受”头有点像“文/ JSON”或“文本/ XML”和服务器将它解析出与回应正确的回应。这样你可以使用相同的URL,但发送不同的数据视图(如果你想要的话)