验证表示REST中的资源和子资源的输入

时间:2014-09-23 15:07:43

标签: web-services api validation rest

我有一个名为user的资源和一个名为images的子资源。要访问特定图片,唯一的方法是使用以下网址:/ users / {userId} / images / {imageId}。

数据库架构使得一个用户可以拥有多个图像。

客户向我们发送“{userId}”和“{imageId}”的输入。我必须验证这些输入。我的问题与验证“{imageId}”输入有关。我有两个选择:

选项1:验证特定imageId是否属于该userId。如果我看不到给定userId的图像,则抛出“给定userId没有图像”的错误。

选项2:验证具有给定“{imageId}”的图像是否存在。抛出一个错误,说“带有给定imageId的图像不存在”。然后再次验证(另一个数据库检查)是否给定“{imageId}”属于“{userId}”。

在上面两个选项中,哪个选项是正确的方法?

1 个答案:

答案 0 :(得分:1)

  

我有一个名为user的资源和一个名为images的子资源。至   访问特定图像,唯一的方法是使用URL:   /用户/ {用户id} /影像/ {图像标识}。数据库模式就是这样   用户可以有多个图像。

我认为您误解了REST的URI结构限制:

对于如何构建URI没有限制。

您可以使用自己的约定,这没关系,因为客户端与URI结构分离...例如我可以说我的图像在/images/{imageId}之下。这完全有效......

您不必将资源映射到实体,而且通过复杂的应用程序,您无法做到这一点。

  

在上面两个选项中,哪个选项是正确的方法?

您可以发回404消息,URI下没有资源。有关URI结构的错误消息对客户端没有任何意义。 URI对客户端是不透明的。