1

基本的に文字列であるxml形式でグループ情報を返すWCFRESTfulサービスを作成しました。この情報を取得するには、PersonIdやGroupIdなどの2つのパラメーターを渡す必要があります。どちらも文字列です。ここでは、人は複数のグループを持つことができます。ロジックは、PersonIdとGroupIdの両方を渡すと、そのグループの特定の情報のみが返されますが、GroupIdを渡さない場合、メソッドはその人のすべてのグループを返します。これまで、たとえばgetメソッドを使用してこのサービスを使用していました。

localhost/service/service.svc/getGroupInfo?PersonId=A100&GroupId=E100

or 

localhost/service/service.svc/getGroupInfo?PersonId=A100&GroupId=

インターフェースは以下のようになります:

[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
string getGroupInfo(string PersonId, string GroupId);

そしてそれは私が期待していた正確な結果を私に与えていました。UriTemplate次に、RESTFullにして、に属性を追加しようとしましたwebInvoke。例えば

[OperationContract]
    [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare,UriTemplate = "getGroupInfo/{PersonId}/{GroupId}")]
    string getGroupInfo(string PersonId, string GroupId);

私のサービスをRESTfullのようにするには

localhost/service/service.svc/getGroupInfo/A100/E100

そして、それはうまく機能しています。しかし今、私の問題が始まりました。GroupIdを設定しないと、サービスが見つからないか、不正な要求エラーが発生します。オプションでgroupIdを設定したい。例えば

単一グループの場合

localhost/service/service.svc/getGroupInfo/A100/E100

そしてすべてのグループのために

localhost/service/service.svc/getGroupInfo/A100

出来ますか?

あなたの貴重な応答を待っています。

ありがとうございました..

4

2 に答える 2

1

テンプレートを「getGroupInfo/{PersonId}/{GroupId=null}」に変更することもできますが、すべてのグループを照会する場合は、URL の末尾にバックスラッシュが必要になると思います

localhost/service/service.svc/getGroupInfo/A100/
于 2012-07-06T14:27:45.010 に答える
0

2つのメソッドを作成する必要があります。

[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare,UriTemplate = "getGroupInfo/{PersonId}")]
string getGroupInfo(string PersonId)
{
    return getGroupInfo(PersonId, null);
}

[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare,UriTemplate = "getGroupInfo/{PersonId}/{GroupId}")]
string getGroupInfo(string PersonId, string GroupId)
{
}

オプションのパラメータを使用するには、「?」を使用する必要があります

[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare,UriTemplate = "getGroupInfo/{PersonId}?GroupId={GroupId}")]
string getGroupInfo(string PersonId, string GroupId)
{
}
于 2013-02-12T10:43:43.460 に答える