C# 这是一个很好的休息时间吗?

C# 这是一个很好的休息时间吗?,c#,wcf,rest,uri,C#,Wcf,Rest,Uri,以下URI在REST中是否良好,或者如何改进它 这是服务定义:(REST和SOAP-WCF) 我有很多获取方法。 和一些插入方法。URI是否可接受。它需要GET/还是什么 编辑: 好了,现在我更明白了: 因此,如果我有一个子服务,它将(可能)是 此外,还可以插入客房预订(包含20多个参数) /CostCentres/{CostCentreNo}/Rooms/{RoomNo}/Booking?param1={param1}....&param20=‌​{param20} 嗯。。

以下URI在REST中是否良好,或者如何改进它

这是服务定义:(REST和SOAP-WCF)

我有很多获取方法。 和一些插入方法。URI是否可接受。它需要
GET/
还是什么

编辑: 好了,现在我更明白了: 因此,如果我有一个子服务,它将(可能)是

此外,还可以插入客房预订(包含20多个参数)

   /CostCentres/{CostCentreNo}/Rooms/{RoomNo}/Booking?param1={param1}....&param20=‌​{param20}  

嗯。。。人们使用REST的原因之一是为了避免实际查询以外的任何查询字符串。在您的案例中,成本中心可能应该拥有自己的URL,以及其服务的单独URL。根据您的示例,我认为只有过滤器应该是查询字符串

我会将您的URL结构如下:

编辑:

好吧,现在我更明白了:如果我有一个子服务,它 可能是

插入房间预订(超过20个参数)可以

如果可能的话,我建议授予可以存在于其自己的URL上更接近父层次结构的单个实体。显然,我不知道您的系统,但我猜您可能希望按照以下思路做一些事情:

仅使用层次结构,如

如果没有成本中心,服务无法存在。如果是这样的话,无论如何都要遵循这样的等级制度。如果一项服务没有成本中心也可以存在,请使用上面的前一个层次结构

最后一件事。此URL来自您的示例:

只有当一个服务可以有一个且只有一个子服务时才有意义。我打赌您的示例需要一个SubServiceID或类似的东西。按照我上面的建议,我肯定会说子服务绝对需要扩展服务URL,例如:


在上述情况下,我希望子服务ID引用与ServiceID相同的实体池,并且此URL返回的任何数据或视图都将包括服务和子服务

事实上,这不是真的
/location?x=100&y=230
是一个非常合理的查询字符串参数用法,它实际上不是一个查询。查询参数对于识别非自然分层的资源很有用。@Darreller:绝对正确——当REST不起作用时,您必须依靠查询字符串。但我的观点是REST是为了尽可能为系统中的实体建立简单的URL。在RESTful系统中,查询字符串用于搜索这些实体。@Randolpho Rest没有提到查询字符串与路径段的关系。Rest绝对不是简单的URL。@Darreller:你说得对,我写错了。REST是关于实体的静态URL。其中包含一个不成文的含义,即静态URL最好尽可能简单。无论如何,查询字符串不是静态的。@Randolpho你能给我指出一些说明REST是关于实体静态URL的文档/规范吗?Roy甚至说“RESTAPI不能定义固定的资源名”,这在我看来与您的说法相矛盾。
    http://paul-hp:1337/WCF.IService.svc/rest/Services?CostCentreNo=1&Filter=1
    /CostCenters/{CostCentreNo}/Services/{ServiceID}/SubService 
   /CostCentres/{CostCentreNo}/Rooms/{RoomNo}/Booking?param1={param1}....&param20=‌​{param20}  
/CostCenters/{CostCentreNo}/Services?Filter={Filter}
/CostCenters/{CostCentreNo}/Services/{ServiceID}/SubService  and,
/CostCentres/{CostCentreNo}/Rooms/{RoomNo}/Booking?param1={param1}....&param20=‌​{param20}
/CostCenters/{CostCenterNo}
/Services/{ServiceID}
/Rooms/{RoomNo}
/CostCenters/{CostCentreNo}/Services/{ServiceID}/
/CostCenters/{CostCentreNo}/Services/{ServiceID}/SubService 
/Services/{ServiceID}/SubServices/{SubServiceID}