【发布时间】:2011-12-22 11:15:51
【问题描述】:
我创建了一个 WCF 服务,它返回一些数据并允许向其发布一些数据。 服务方式如下:
[OperationContract]
bool UploadStream(Guid key, List<StreamRecord> values);
[OperationContract]
bool RegisterStream(Guid key);
[OperationContract]
StreamCollection GetStreams(Guid key);
我需要使用 REST 接口来实现它。 我创建了一个新接口,IRestService,如下所示
[WebInvoke(
Method = "GET",
ResponseFormat = WebMessageFormat.Xml,
UriTemplate = "/bitpool/{poolKey}/streams")]
BitStreamCollection GetBitStreams(string poolKey);
它工作正常(我可以从浏览器地址栏测试它,一切都很好)
现在我也想实现 Upload 方法,但我不知道该怎么做 我试过了
[WebInvoke(
Method = "POST",
RequestFormat = WebMessageFormat.Xml,
ResponseFormat = WebMessageFormat.Xml,
UriTemplate = "/stream/{streamKey}/records/{values}")]
bool UploadStream(string streamKey, List<StreamRecordEntity> values);
但是当我尝试在浏览器中访问该服务时,它给出了错误
http://localhost:6767/RestServer.svc/
它给出了一个错误:
合约“IRestServerJson”中的操作“UploadBitStream”有一个名为“values”的路径变量,它没有“字符串”类型。 UriTemplate 路径段的变量必须具有“字符串”类型。
我认为对于 POST,我无法定义这样的 URL,但我应该怎么做呢?
另外,RegisterStream 方法应该检查带有 key 的流是否存在,如果不存在,则创建它并返回 true,否则返回 false。
我应该将其定义为 GET(因为它必须返回结果)还是 PUT 或 POST?
谢谢
【问题讨论】: