多页文档作为REST上的图像

多页文档作为REST上的图像,rest,restapi,Rest,Restapi,我试图公开一个返回多页文档的RESTful URL。在我看来,有了PDF,它就相当简单了 GET /documents/12345.pdf 但我也希望以图像格式公开相同的文档,其中每个页面都是单独的jpg。我最好如何构建URL 到目前为止,我左右为难 GET /documents/12345/page1.jpg 或 或 我知道没有绝对正确的方法,我只是在寻找最直观的方法。我花了太多时间来研究这个问题,以至于我不知道我最喜欢哪一个,甚至不知道是否有其他更好的方法 谢谢 怎么样 GET /doc

我试图公开一个返回多页文档的RESTful URL。在我看来,有了PDF,它就相当简单了

GET /documents/12345.pdf
但我也希望以图像格式公开相同的文档,其中每个页面都是单独的jpg。我最好如何构建URL

到目前为止,我左右为难

GET /documents/12345/page1.jpg

我知道没有绝对正确的方法,我只是在寻找最直观的方法。我花了太多时间来研究这个问题,以至于我不知道我最喜欢哪一个,甚至不知道是否有其他更好的方法

谢谢

怎么样

GET /documents/pdf/12345

GET/documents/jpg/12345/1

在使用REST时,我更喜欢在不使用参数或查询字符串的情况下公开资源。这样,它符合RESTful语法,并且更容易使用ASP.NET MVC中的内置路由进行解析

就像@Tichodroma所说的Http头一样,在使用REST时,通常不希望使用自定义Http头。请查看此处,以获得良好的解释:


资源

您的资源就是文档。PDF和JPEG是此资源的两种表示形式。所以这两种都可以在

/documents/12345
内容协商

客户端如何选择PDF或JPEG格式?这就是为什么

对于JPEG表示

GET /documents/12345
Accept: application/pdf
用于PDF表示

页面

现在我们仍然有页面的问题。在此,我建议遵循评论中提到的方法:

GET /documents/12345/1
Accept: image/jpeg
对于JPEG表示的第1页

问题

还有一个小问题:这个请求会发生什么

GET /documens/12345/1
Accept: application/pdf
GET /documents/12345
Accept: image/jpeg
PDF表示是否有“第1页”作为单独的实体?如果您的RESTful服务能够生成它,那么可能有

但我们还没有完成。这个请求会发生什么

GET /documens/12345/1
Accept: application/pdf
GET /documents/12345
Accept: image/jpeg

是否有单页版本的JPEG表示?同样,如果您的RESTful服务能够生成它,那么可能还有。也许它可以在一页JPEG上生成一个所有页面的图像。如果找不到,返回
404 Not Found

GET/documents/pdf/12345和GET/documents/jpg/12345/1如何?@tranceport将此作为答案发布,我将向上投票:)并且不要忘了提到HTTP
Accept
标题:)完成,伙计!谢谢你的支持!我更喜欢我的答案。但是我已经答应了+1:)哈哈,我相信你的肯定会被接受的。至少我会这么做!感谢您指出指定pdf页面或不指定jpg页面的问题,在这些情况下,我将返回404。@user647772非常好的解释。我们有类似的场景,但有一些额外的要求。我发布了一个新的问题-。我很好奇,你能为我们的案子提出什么建议。
GET /documents/12345
Accept: image/jpeg