我正在使用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设置以设置路径格式的所有参数?或者我是否需要更改合同以使用查询字符串参数?
请参阅下面的屏幕抓取以获取更多信息...
非常感谢
答案 0 :(得分:7)
我找到了一种方法让它发挥作用。
您可以在Postman中的URL栏中使用占位符,使您仍然可以使用“Params”部分来传递实际值。这对于快速编辑param值非常有用,无需通过URL进行解析。您只需在地址栏中设置您的URL结构,然后让“Params”部分完成剩下的工作。
要执行此操作,您需要像正常情况一样将路径参数添加到URL,但不添加值,而是添加前缀为冒号的占位符。占位符现在将自动显示在“键”列中的“参数”部分中。您可以在“值”列中添加实际参数值,以便在运行请求时,占位符将与实际值交换出来。
以下是一个例子: - http://troikawcf.localhost/ClientWCFService.svc/GetClientDataFromAlias/Alias/:Alias
这是Postman的屏幕截图,以进一步澄清: -
答案 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中添加参数