首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用UriTemplate?

如何使用UriTemplate?
EN

Stack Overflow用户
提问于 2013-12-30 04:57:51
回答 2查看 1.8K关注 0票数 0

在我的WCF web服务中,我有低于OperationContract的。

代码语言:javascript
复制
[OperationContract]
[WebGet(UriTemplate = "/publisheddata/{number}/{*publication}")]
Message GetPublished(String number, String publication);

[OperationContract]
[WebGet(UriTemplate = "/unpublisheddata/{number}/{*publication}")]
Message GetUnPublished(String number, String publication);

我想为上述两个OperationContract调用一个通用方法,这意味着在服务实现代码中,我将在调用UriTemplate的基础上调用存储过程,我知道我可以通过在上面的url中添加额外的属性来轻松完成,我不想让用户把它从url中放出来。

在这里,我想在UriTemplate调用的基础上编写条件,所以上面的代码如下所示:

代码语言:javascript
复制
[OperationContract]
[WebGet(UriTemplate = "/publisheddata/{number}/{*publication}")]
Message GetData(String number, String publication);

[OperationContract]
[WebGet(UriTemplate = "/unpublisheddata/{number}/{*publication}")]
Message GetData(String number, String publication);

在我的服务实现中,我希望检查(如果未发布数据),然后检查GetUnPublished (如果发布了数据,则检查GetPublisheddata )

它是否有可能或建议更好的方式来实现它?

EN

回答 2

Stack Overflow用户

发布于 2013-12-31 07:52:36

首先,-可能-你会得到异常,因为你的方法名称。您不能使用与您相同的方法名称,但可以使用OperationContract属性"Name“

代码语言:javascript
复制
[OperationContract(Name="GetPublished")]
Message GetData(String number, String publication);

[OperationContract(Name="GetUnPublished")]
Message GetData(String number, String publication);

如果您喜欢单一的方法,您可以这样修改您的方法

代码语言:javascript
复制
[OperationContract]
[WebGet(UriTemplate = "/{publicationType}/{number}/{*publication}")]
Message GetData(string publicationType, string number, string publication);

在您的方法中,您检查"publicationType“参数并执行逻辑。

票数 1
EN

Stack Overflow用户

发布于 2013-12-31 08:12:11

如果我真的理解,您只想提供单一的访问方法。我在我的项目中使用这样的结构

代码语言:javascript
复制
 [WebInvoke(Method="POST", UriTemplate ="/customers", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json), Description("Save a customer information")]
 OperationResult CustomerSave(Request<Customer> customerRequest);

此外,我还在WCF接口/合同中显示了两种不同的-not方法--命名为“创建”和“更新”。

在我的wcf方法(CustomerSave)中,我正在这样做

代码语言:javascript
复制
if(customerRequest.Id != Guid.Empty)
{
    Update(customerRequest);
}
else
{
   Create(customerRequest);
}

而且我的用户看不到创建/更新方法

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20833574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档