REST Uri params验证

时间:2017-12-21 16:11:49

标签: c# rest request

我的请求中有参数

[OperationContract]
[WebInvoke(Method = "GET",
  ResponseFormat = WebMessageFormat.Json,
  RequestFormat = WebMessageFormat.Json,
  BodyStyle = WebMessageBodyStyle.Bare,
  UriTemplate = "request?code={codeParam}&name={nameParam}&id={idParam}")]
List<ResponseData> JSONDataList(string codeParam , string nameParam , string idParam);

所以我有codeParamnameParamidParam 如果Uri将是"request?name=myName&BlaBlaParam=example"怎么办?

如何在代码中从请求中捕获此未定义的BlaBlaParam参数?
服务正常,没有例外。

1 个答案:

答案 0 :(得分:0)

我找到了解决这个问题的方法。 https://books.google.ru/books?id=w02As8L5l7MC&pg=PA29&lpg=PA29&dq=UriTemplateMatch.QueryParameters&source=bl&ots=cXLkc0nU_o&sig=yrsYLZqLB7Im2PrCWZmkGS5kbC4&hl=ru&sa=X&ved=0ahUKEwjlv4aF36TYAhWIBZoKHU64DZwQ6AEIPDAD#v=onepage&q=UriTemplateMatch.QueryParameters&f=false

WebOperationContext webCtx;
webCtx = WebOperationContext.Current;
IncomingWebRequestContext incomingCtx;
incomingCtx = webCtx.IncomingRequest;
string uri;
uri = incomingCtx.UriTemplateMatch.RequestUri.ToString();
NameValueCollection query;
query = incomingCtx.UriTemplateMatch.QueryParameters;
string queryName;
if (query.Count != 0)
{
      var enumQ = query.GetEnumerator();
      while (enumQ.MoveNext())
      {
            queryName = enumQ.Current.ToString();
            Console.Writeline{"{0} = {1}", queryName, query[queryName]);
      }
}

其中query是一个字典,其中包含:keys是参数名称,值是参数值