如何定义属性以将数据上载到通过WCF服务实现的REST web服务?
我创建了一个WCF服务,它返回一些数据,还允许向发布一些数据。 服务方法如下:如何定义属性以将数据上载到通过WCF服务实现的REST web服务?,wcf,rest,webinvoke,Wcf,Rest,Webinvoke,我创建了一个WCF服务,它返回一些数据,还允许向发布一些数据。 服务方法如下: [OperationContract] bool UploadStream(Guid key, List<StreamRecord> values); [OperationContract] bool RegisterStream(Guid key); [OperationContract] StreamCollection GetStreams(Gui
[OperationContract]
bool UploadStream(Guid key, List<StreamRecord> values);
[OperationContract]
bool RegisterStream(Guid key);
[OperationContract]
StreamCollection GetStreams(Guid key);
它工作正常(我可以从浏览器地址栏测试,一切正常)
现在我也想实现Upload方法,但我不确定如何实现
我试过了
[WebInvoke(
Method = "POST",
RequestFormat = WebMessageFormat.Xml,
ResponseFormat = WebMessageFormat.Xml,
UriTemplate = "/stream/{streamKey}/records/{values}")]
bool UploadStream(string streamKey, List<StreamRecordEntity> values);
它给出了一个错误:
协定“IRestServerJson”中的操作“UploadBitStream”有一个名为“values”的路径变量,该变量没有“string”类型。模板路径段的变量必须具有“字符串”类型。
我想对于POST我不能定义这样的URL,但我应该怎么做呢
另外,方法RegisterStream应该检查带键的流是否存在,如果不存在,则创建它并返回true,否则返回false
我应该将其定义为GET(因为它必须返回结果)还是PUT或POST
谢谢在
POST
请求的正文中传递值
,格式为xml,而不是url。测试这一点的一个简单方法是使用
关于RegisterStream
,POST
和PUT
都可以在响应体中返回信息。您可以使用POST
并根据服务器采取的操作返回适当的HTTP状态代码:201 Created
如果资源已创建,则返回一个不同的状态代码,如果资源已存在,则该代码在应用程序中有意义
调用方可以根据返回的HTTP状态代码确定资源是否已创建或已存在,因此不需要返回值bool
旁注:您可以使用[WebGet(…)]
而不是[WebInvoke(Method=“GET”…)]
[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/