如何使用 POSTMAN 发布字符串数组?
Posted
技术标签:
【中文标题】如何使用 POSTMAN 发布字符串数组?【英文标题】:How to post string array using POSTMAN? 【发布时间】:2017-02-01 16:46:47 【问题描述】:我正在使用 Postman 将字符串数组发送到 Web API。 Web API 方法如下所示:
[HttpPost]
public async Task<IEnumerable<DocumentDTO>> GetDocuments([FromBody]IEnumerable<string> documentNames)
return await _service.GetDocuments(documentNames);
我在SO post 看到了如何使用 Postman 发送数组。这是我发送数组的方式:
Fiddler 显示请求的内容类型是multipart/form-data;
但我收到错误响应:
"Message": "请求实体的媒体类型 'multipart/form-data' 此资源不支持。", "ExceptionMessage": "否 MediaTypeFormatter 可用于读取类型的对象 'IEnumerable
1' from content with media type 'multipart/form-data'.", "ExceptionType": "System.Net.Http.UnsupportedMediaTypeException", "StackTrace": " at System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent content, Type type, IEnumerable
1 格式化程序,IFormatterLogger formatterLogger, CancellationToken cancelToken)\r\n at System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage 请求,类型类型,IEnumerable`1 格式化程序,IFormatterLogger formatterLogger, CancellationToken cancelToken)"
我尝试将密钥设置为documentNames
,documentNames[]
,documentNames[0]
。
我尝试将正文选择为x-www-form-urlencoded
。当我这样做时,API 会收到一个空集合。
我已尝试将正文选择为raw
。当我这样做时,API 接收 null 作为参数。
问题
-
如何使用表单数据发送字符串数组?
如何使用
x-www-form-urlencoded
发送字符串数组?
如何将字符串数组作为原始 JSON 发送?
【问题讨论】:
【参考方案1】:将其作为 JSON 数组传递并选择raw
选项,如下所示
对于 API 方法签名
public void Post([FromBody] IEnumerable<string> value)
//some processing
【讨论】:
谢谢,我对复杂对象列表使用了相同的想法,对我来说效果很好 太简单了,我折腾了这么久。令我惊讶的是,请求处理程序无法识别将其作为 value:[1,2,3] 传递。【参考方案2】:如果你想通过参数初始化一个数组,你可以这样做。
使用具有相同名称的variable
【讨论】:
【参考方案3】:在表单中使用相同的键记得添加 [] 就可以了
【讨论】:
adding[] 有效,特别是当我们 json_encode 将其保存为数据库中的字符串时。如果你这样做categories[0]
/ categories[1]
它将创建键值对并且到达服务器的值不会在单个数组中以上是关于如何使用 POSTMAN 发布字符串数组?的主要内容,如果未能解决你的问题,请参考以下文章