我正在尝试使用 WEB API 创建我的第一个 REST 服务,以替换我在 Web 表单 asp.net 项目中的一些回发。在 Web 窗体项目中,当我浏览到一个新网页时,我总是会得到一个 ASP.net Application 变量和一个查询字符串值,它们可以帮助我确定要连接到哪个数据库。在这个旧应用程序中,它连接到几个不同的数据库,这些数据库都具有相同的模式和数据库对象,但每个数据库中的数据不同
我不确定将这些变量传递给 REST 服务的最佳方式,或者它们是否应该成为路由或其他方法的一部分。
所以在像下面这样的 REST 方法中
// GET api/<controller>/5
public string GetCategoryByID(int id)
{
return "value";
}
我可以获得类别 ID 并将其传递到我的数据库层,但我还需要上面提到的两个变量。我将需要在每次调用我的 REST api 时获取这些变量,以便访问适当的数据库。我应该使用类似下面的东西吗:
// GET api/<controller>/5
public string GetCategoryByID(int id, string applicationEnvironment, string organization)
{
return "value";
}
或者他们应该像这样成为路线的一部分:
api/{appEnvironment}/{organization}/{controller}/{id}
这似乎是一个简单的问题,但我很难找到解决方案。
最佳答案
我最终通过 httpget 调用传递了额外的参数。除非我得到一些额外的反馈,否则我可能会遵循这种模式。
[HttpGet]
public Company[] GetProgramCompanies(int id, [FromUri] string org, [FromUri] string appEnvir)
{
DataLayer dataAccess = new DataLayer(Utilities.GetConnectionString(org, appEnvir));
IEnumerable<BudgetProgramCompanyListing> companies = dataAccess.GetProgramCompaniesListing(id).OrderBy(o => o.Company_Name);
Company[] returnComps = new Company[companies.Count()];
int count = 0;
foreach (BudgetProgramCompanyListing bpc in companies)
{
returnComps[count] = new Company
{
id = bpc.Company_ID,
name = bpc.Company_Name
};
count++;
}
return returnComps;
}
使用此 url 调用上述服务:
api/programcompanies/6?org=SDSRT&appEnvir=GGGQWRT
关于asp.net - 具有许多参数的 Web API httpget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18221263/