在Postman中使用路径参数测试WCF API

时间:2017-04-13 09:43:03

标签: api wcf postman

我正在使用WCF(C#)构建API并使用Postman进行测试。我似乎在使用Postman中的“Params”部分时遇到了麻烦,因为它正在将我输入的任何键值对转换为Query String Params。

我的合同指定UriTemplate就像这样...

    [OperationContract]
    [WebGet(UriTemplate = "/GetClientDataFromAlias/Alias/{alias}", 
                RequestFormat = WebMessageFormat.Json,
                ResponseFormat = WebMessageFormat.Json)]
    GetClientDataFromAliasResponse GetClientDataFromAlias(string alias);

然而,当我通过Postman运行请求时,URL被翻译成以下内容......

http://troikawcf.localhost/ClientWCFService.svc/GetClientDataFromAlias?Alias=myalias

我希望将其翻译成以下内容,以符合我的合同

http://troikawcf.localhost/ClientWCFService.svc/GetClientDataFromAlias/Alias/myalias

我是否错过Postman设置以设置路径格式的所有参数?或者我是否需要更改合同以使用查询字符串参数?

请参阅下面的屏幕抓取以获取更多信息...

非常感谢

enter image description here

3 个答案:

答案 0 :(得分:7)

我找到了一种方法让它发挥作用。

您可以在Postman中的URL栏中使用占位符,使您仍然可以使用“Params”部分来传递实际值。这对于快速编辑param值非常有用,无需通过URL进行解析。您只需在地址栏中设置您的URL结构,然后让“Params”部分完成剩下的工作。

要执行此操作,您需要像正常情况一样将路径参数添加到URL,但不添加值,而是添加前缀为冒号的占位符。占位符现在将自动显示在“键”列中的“参数”部分中。您可以在“值”列中添加实际参数值,以便在运行请求时,占位符将与实际值交换出来。

以下是一个例子: -     http://troikawcf.localhost/ClientWCFService.svc/GetClientDataFromAlias/Alias/:Alias

这是Postman的屏幕截图,以进一步澄清: -

Path Params in Postman 我希望将来可以帮助别人,因为它困扰了我几天为什么REST客户端不支持Path Params。

答案 1 :(得分:1)

我相信你想要Creating cURL commands in Postman。 希望你能在这里找到答案。 还考虑使用Fiddler4来测试其余的服务。

答案 2 :(得分:1)

UriTemplate基本上有两部分(来自MSDN):

  • 路径
  

路径由一系列由斜杠(/)分隔的段组成。每   segment可以有一个文字值,一个变量值(写在   花括号[{}],约束以匹配正好一个的内容   段)

  • 可选查询
  

可以完全省略查询表达式。如果存在,则指定   一系列无序的名称/值对。   ...   不允许使用不成对的值。


因此,基本上有两种方法可以在webrequest的URL中包含参数:

Thesa是花括号中的变量,在查询之前出现,如下所示: GetClientDataFromAlias/{alias}

这些名称/值对在可选查询表达式中显示为 ,就像是 GetClientDataFromAlias?Alias=myalias

在您的情况下,当使用Postman中的 Params 部分时,Postman会将键/值参数添加到查询表达式,而不是路径段< / strong>因为查询表达式由

组成
  

一系列无序的名称/值对。

如果您希望参数位于路径段中,则需要删除Postman中的键/值参数,并在花括号内的请求的URL中添加参数