我目前正在使用C#设计REST WVF Web服务,该服务将被MVC网站使用,并且只是混淆了一点。假设我有两个带签名的方法
public bool IsEmailAvailable(string email address) { ... }
public DbUser GetUser(object id) { ... }
我可以像上面一样保留我的服务界面和实现吗?有人提到我更喜欢设计它
public IsEmailAvailableResponse IsEmailAvailable(IsEmailAvailableRequest request) { ... }
public GetUserResponse GetUser(GetUserRequest request) { ... }
以各种方式实施它的优点和缺点是什么?
答案 0 :(得分:1)
这是一个聪明的人。远程接口非常重要,第二个版本更易于维护。您可以在Request | Response中添加其他参数而不会中断更改。这是一种基于消息的风格。
至于我,即便是第二版也不是好选择。第二个版本包含太具体的方法。远程接口应基于parametric polymorphism,因此这种API将是稳定且灵活的
因此,RESTful api应如下所示:
object Get(object request);
object Post(object request);
object Put(object request);
object Delete(object request);
etc..
不幸的是,默认情况下,WCF不支持这种接口,但我们可以使用Message替代对象并获得相同的结果。
查看以下文章了解更多详情:Building RESTful Message Based Web Services with WCF