如何从邮递员查询参数c#发送值列表

Posted

技术标签:

【中文标题】如何从邮递员查询参数c#发送值列表【英文标题】:How to send list of values from postman query params c# 【发布时间】:2020-12-24 08:16:17 【问题描述】:

您好,我需要在一个请求中将多个值发布到数据库。

这里我需要传递多个存储地址并将这些值读取为 c# 中的 json。我试过下面的代码

var request = HttpContext.Current.Request;

string[] StorageAddress = request.Params["StorageAddress"];

但我没有得到响应,因为我需要如何通过邮递员 url 参数传递多个值并在代码中读取它。

更新

【问题讨论】:

你使用什么框架来处理这个请求?例如API 控制器。您可能希望查看在控制器上设置操作以将查询参数作为操作的输入作为路由的一部分。 如果你是 Web API,像这样 [FromQuery] string[] StorageAddress 装饰你的方法参数,这样就可以了。 @Joe_DM 使用 C# 【参考方案1】:

您可以在控制器中添加一个参数来处理 csv 参数,例如 StorageAddresses(例如 http://localhost:30601/api/licence/seeds/application/finalsubmit?StorageAddresses=test%20score%201,test%20score%202)

您可以按照本教程在您的站点中实现它https://www.strathweb.com/2017/07/customizing-query-string-parameter-binding-in-asp-net-core-mvc/

【讨论】:

考虑改写你的答案,让它听起来不像一个问题。还请显示链接中的代码如何回答问题。目前,您正在强制点击,并且您的答案不是独立的。见"Provide context for links"。【参考方案2】:

文章/参考:Arrays in query params

检索选项 1

var request = HttpContext.Current.Request;
string[] StorageAddress = request.Params["StorageAddress"].Split(',');

检索选项 2

public IHttpActionResult Get([FromUri] string[] StorageAddress )

    ....

使用 PostMan 传递 JSON 进行更新

您可以使用检索选项 3

public IHttpActionResult Get(string[] StorageAddress )

    ....

使用Newtonsoft检索选项 4

var json = await Request.Content.ReadAsStringAsync();
var storageAddress = JsonConvert.DeserializeObject<string[]>(json);

检索选项 5 以混合 json 数据和文件。对于路过的邮递员,请参阅此How to upload a file and JSON data in Postman?。

public async Task<IHttpActionResult> Post()

    var atorageAddress = HttpContext.Current.Request.Form["StorageAddress"].Split(',');
    var files = HttpContext.Current.Request.Files;
    List<HttpPostedFile> fileList = new List<HttpPostedFile>();
    foreach (var key in files.AllKeys)
    
        // Do your logic here for manipulation of the files
        fileList.Add(files[key]);
    

    return Json("OK");

更新:检索 JSON

    像这样设置您的 JSON。

    ["Address":"Test Store 1","Address":"Test Store 2"]

    像这样检索它。

    var storageAddress = JsonConvert.DeserializeObject&lt;List&lt;Dictionary&lt;string, string&gt;&gt;&gt;(HttpContext.Current.Request.Form["StorageAddress"]);

【讨论】:

但我需要将其读取为 json 格式,并且我不能使用第二个选项,因为我还需要使用第二个选项传递图像我无法传递图像 @tontonsevilla 是的,我知道这个方法,但我不能从原始数据中传递它,因为我还需要从 formdata 传递图像,因为当我发送请求时两者都不起作用 @chethu,选项 5 怎么样。 我在邮递员中将值传递为"Address":"Test Store 1","Address":"Test Store 2" 如何在 c# 中读取每个地址值 让我们continue this discussion in chat。

以上是关于如何从邮递员查询参数c#发送值列表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用邮递员发布对象和列表

如何从帖子中的 csv 查询参数绑定可枚举列表

如何将字符串列表转换为c#中的浮点列表,统一?

如何向 GET 请求发送巨大的参数列表

如何从非托管 C++ 代码获取结构化列表值到 C#?

如何将值列表设置为休眠查询的参数?