鉴于REST-ful Web服务
/product/{product-id}
返回Content-Type
的Product XML文档x-esvc/product+xml
我还需要支持
x-esvc/prices+xml
(x-esvc是一种自定义MIME类型;产品和价格是两种子类型,而+ xml暗示它是基于XML的格式,按照RFC 3023)
问题是第二种格式是否应该有自己的网络服务
/prices/{product-id}
...或者我是否应该使用内容协商和Accept HTTP标头来区分现有产品Web服务中的两种格式?
请注意,只涉及一个真实实体(产品),“价格”是OO术语中的依赖对象列表。但是,在这两种情况下都可以使用相同的标识符。
制定问题的另一种方法是,“价格”是否可以被视为同一资源的不同表示,或者如果信息不同,是否应将其视为另一种资源?
我知道内容协商通常用于区分同一图像的不同技术格式,如JPG和PNG;即信息相同但格式不同。在这种情况下,内容协商将用于区分同一实体的不同信息。
这是否可以有效地使用REST-ful Web服务中的Content Negotiation和Accept HTTP标头?
答案 0 :(得分:0)
我喜欢不同的网络服务。它简化了任何消费者的使用,因为通过单独指定URL可以完全表达请求。这可能与您项目的当前阶段无关,但随着它的发展可能会发生变化 - 组装和维护Web服务调用更容易,而不必使用请求标题。
如果您不需要/想要这个分离服务器端,您仍然可以通过Web服务器配置中的指令统一两个URL位置。
操作Web服务也可能变得更容易:考虑负载平衡和维护停机时间。
根据您项目的规模,您的里程可能会有所不同。对于一些内部PoC,你可能最好依附于你拥有的东西。