Skip to main content
 首页 » 编程设计

c#之RESTful WCF Web 服务的 UriTemplate 前缀

2024年02月13日27cyq1162

我在 WCF 服务主机中有各种接口(interface)(端点),每个接口(interface)都用于完全不同的关注点。在经典的肥皂网络服务中,我能够定义一个基本主机地址(例如 http://myhost.com/)并将每个接口(interface)映射到一个相对 URI(IServiceContract -> service/, IMaintenanceContract -> maintenance/) 所以我可以通过例如调用它们http://myhost.com/service/mymethod。

现在我正在迈出使用 JSON 作为 CRUD Web 请求的消息格式的 RESTful WCF 服务的第一步,我唯一看到的解决操作的方法是使用 UriTemplate 字段 WebInvoke(或 WebGet)属性。不幸的是,我似乎不能把它放在接口(interface)上,只能放在操作契约方法上。

如何将每个接口(interface)映射到不同的相对 URI?

请您参考如下方法:

是的,您会将基本 url 放在 [OperationContract] 方法上。不过这没关系,因为您可以指定任何您想要的基本 url。下面是一个示例界面,可为您提供此控件。

namespace MyHostApi 
{ 
    [ServiceContract] 
    public interface IMyHostApi 
    { 
 
        [OperationContract] 
        [WebGet(BodyStyle = WebMessageBodyStyle.Bare, 
                UriTemplate = "WhateverYouWant/HelloWorld/{name}")] 
        string HelloWorld(string format, string name); 
 
    } 
}