【发布时间】:2018-07-14 00:33:31
【问题描述】:
我的 MVC Web Api 中有这个 GET 方法:
public IQueryable<Employee> GetEmployeeByJobTitle(List<string> jobTitles)
{
var employeeByJobTitle = from e in db.Employee
where jobTitles.Contains(e.JobTitle)
select e;
return db.Employee;
}
因为我需要按职称获得一组员工。因此,如果我希望所有员工的职称在“生产技术员 - WC60”和“生产主管 - WC60”,我需要调用这个 URI
如您所见,查询字符串庞大而复杂。现在,我需要使用来自Web.API.Client.Libraries 的HttpClient 类从客户端控制台调用此方法。有没有一种简单的方法来创建从对象开始构建上述查询字符串的方法:
var jobTitles = new List<string>
{
"Production Technician - WC60",
"Production Supervisor - WC60"
};
类似
string BuiltUriFromObject(List<string> jobTitles){};
【问题讨论】:
-
您必须使用 GET 吗?对于复杂的数据,POST 会更好。
-
关于您的问题,您最好将 JSON 对象作为参数传入,然后在处理程序中解析它。我建议为该 JSON 对象创建一个容器并将其用作参数。
-
关于您发布的代码,您的方法返回整个 Employee 表;这真的是你想要的吗?此外,您可能会使用这种方法获得“上下文已被处理”异常;实现结果集并返回 IEnumerable
可能会更好,这样您就可以清理输出并降低通过线路发送 PII 的风险。只给请求者他们需要的东西,而不是更多。 -
谢谢蒂姆。我对 Web Api 很陌生。我曾想过使用 POST 请求,但使用 POST 请求来获取对象列表是否正确?我仍然需要调用我的 Web Api 方法
GetEmployeeByJobTitles但它会执行 POST 操作。我很困惑。你能帮帮我吗? -
所以@K_foxer9 我将首先将
List<string> jobTitles = ...转换为json 对象,然后使用此字符串将uri 与stackoverflow.com/questions/12610585/… 类似的东西组成
标签: c# asp.net-web-api query-string