在REST服务中使用请求/响应

时间:2014-01-22 10:07:04

标签: c# wcf web-services rest model-view-controller

我目前正在使用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) { ... }

以各种方式实施它的优点和缺点是什么?

1 个答案:

答案 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