如何解决如何循环 RestClient 请求传递 id 然后附加到响应
我用来抓取数据的 API 非常有限。我可以获取数据的唯一方法是通过 GET 请求传递我需要的记录的标识符。问题是我可以有多个需要数据的 ID。是否有一种有效的方法来循环请求并将 json 响应附加到 List 并将该 id 添加到该 JSON?
private static List<Question> getQuestions(string bearer,List<int> customerids)
{
//the example below passes the customer ID 1. What I want to do is pass customerids
var qq = new RestClient("https://server.test.net/api/customers/1/");
qq.AddDefaultHeader("Authorization",bearer);
var request = new RestRequest("questions");
var response = qq.Execute(request);
string rawResponse = response.Content;
List<Question> questions = JsonConvert.DeserializeObject<List<Question>>(rawResponse);
return questions;
}
我需要通过循环运行 API 调用(因此,如果客户 1、6、776 存在于 customerids 列表中,则调用它们)而不是当前将其设置为客户 1。然后我想将结果附加到rawResponse 以及客户 ID,因为它不存在于我拉回的数据中。
不幸的是,这可能不是运行它的最佳方式,并且与软件供应商就达到响应限制进行了多次对话,但这是我可以通过循环运行然后加入不存在的客户 ID 来提取数据的唯一方法在我拉回的数据中,即使我可以在 get 请求中使用它。
因此结果看起来像(其中客户 ID 不存在于响应中,但是通过在调用后从 customerids 列表传递并将所有 ID 附加到相同的响应数据集来添加:
客户ID | 问题编号 | 回答 |
---|---|---|
1 | 43 | 真实 |
6 | 76 | 已婚 |
774 | 76 | 单人 |
问题类:
public class Question
{
public int QuestionID {get; set;}
public string answer {get; set;}
}
潜在的 foreach 需要一些帮助来为每个客户附加结果并将关联的客户 ID 添加到结果中
foreach (var item in customerids)
{
var qq = new RestClient("https://system.test.net/api/customers/" + item + "/");
qq.AddDefaultHeader("Authorization",bearer);
var request = new RestRequest("questions");
var response = qq.Execute(request);
string rawResponse = response.Content;
}
解决方法
根据上面的评论,您几乎已经解决了问题。
我认为唯一尚未解决的部分是如何将 customerid 分配给 API 返回的问题。
从 API 收到 JSON 后,您应该将其反序列化为问题列表,然后将 CustomerId 分配给列表中的每个问题。
您可以使用 SELECT LINQ 方法或遍历问题列表。
在下面的代码中,我使用了使用 SELECT LINQ 方法的方法。
not exists
希望这能帮助您解决问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。