我创建了一个 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?
谢谢