一部のデータを返し、一部のデータをに投稿できる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'には、タイプ'string'を持たない'values'という名前のパス変数があります。UriTemplateパスセグメントの変数は、タイプ'string'である必要があります。
POSTの場合、そのようなURLを定義することはできないと思いますが、どうすればよいですか?
また、メソッドRegisterStreamは、キーを持つストリームが存在するかどうかを確認し、存在しない場合は作成してtrueを返し、存在しない場合はfalseを返します。
GET(結果を返す必要があるため)またはPUTまたはPOSTとして定義する必要がありますか?
ありがとう