我有一个名为user的资源和一个名为images的子资源。要访问特定图片,唯一的方法是使用以下网址:/ users / {userId} / images / {imageId}。
数据库架构使得一个用户可以拥有多个图像。
客户向我们发送“{userId}”和“{imageId}”的输入。我必须验证这些输入。我的问题与验证“{imageId}”输入有关。我有两个选择:
选项1:验证特定imageId是否属于该userId。如果我看不到给定userId的图像,则抛出“给定userId没有图像”的错误。
选项2:验证具有给定“{imageId}”的图像是否存在。抛出一个错误,说“带有给定imageId的图像不存在”。然后再次验证(另一个数据库检查)是否给定“{imageId}”属于“{userId}”。
在上面两个选项中,哪个选项是正确的方法?
答案 0 :(得分:1)
我有一个名为user的资源和一个名为images的子资源。至 访问特定图像,唯一的方法是使用URL: /用户/ {用户id} /影像/ {图像标识}。数据库模式就是这样 用户可以有多个图像。
我认为您误解了REST的URI结构限制:
您可以使用自己的约定,这没关系,因为客户端与URI结构分离...例如我可以说我的图像在/images/{imageId}
之下。这完全有效......
您不必将资源映射到实体,而且通过复杂的应用程序,您无法做到这一点。
在上面两个选项中,哪个选项是正确的方法?
您可以发回404消息,URI下没有资源。有关URI结构的错误消息对客户端没有任何意义。 URI对客户端是不透明的。