我正在尝试使用WEB API创建我的第一个REST服务,以替换Web窗体www.example.com项目中的一些回发asp.net。在Web窗体项目中,当我浏览到新的网页时,我总是会获得一个ASP.netApplication变量和一个querystring值,以帮助我确定要连接到哪个数据库。在这个旧应用程序中,它连接到几个不同的数据库,这些数据库都具有相同的模式和数据库对象,但每个数据库中的数据不同
我不确定将这些变量传递给REST服务的最佳方式,或者它们是否应该成为路由或其他方法的一部分。
所以在像下面这样的REST方法中
// GET api/<controller>/5
public string GetCategoryByID(int id)
{
return "value";
}
我可以获取category id并将其传递给我的数据库层,但我还需要上面提到的两个变量。我需要在每次调用REST API时获取这些变量,以便访问相应的数据库。我应该使用以下内容吗:
// GET api/<controller>/5
public string GetCategoryByID(int id, string applicationEnvironment, string organization)
{
return "value";
}
或者他们应该是路线的一部分,像这样:
API/{appEnvironment}/{organization}/{controller}/{id}
这似乎是一个简单的问题,但我很难找到解决方案。
5条答案
按热度按时间y4ekin9u1#
最后我在httpget调用中传递了额外的参数。除非我得到一些额外的反馈,否则我可能会遵循这种模式。
使用此url调用上述服务:
API/programcompanies/6?org=SDSRT&appEnvir=GGGQWRT
a6b3iqyw2#
在.Net core 1.1中,您可以在HttpGet属性中指定更多参数,如下所示:[HttpGet(“{appEnvironment}/{organization}/{controller}/{id}”)]
它也可以在其他.Net版本中工作。
p5cysglq3#
我曾经按照下面两种方法在HttpGet中传递多个参数
并且在上述方法中webapi url将是http://localhost:1384/api/emps?id=1&DeptID=1。USP_GET_EMPINFO是具有两个参数的存储过程。
在第二个方法中,我们可以使用带有[FromUri]的类来传递多个参数。代码片段如下
并且webapi url将是http://localhost:1384/api/emps?id=1&DEPTID=1这里DEPTID是类的属性之一。我们可以在url中添加多个参数,用&分隔
goucqfw64#
可以用逗号分隔数据。
对我来说,下面的工作很完美:
nkoocmlb5#
您还可以定义一个模型,并将其与请求一起发送,然后使用[FromBody]将其绑定到API函数中的变量。
比如:
如图所示Model binding in Asp.Net Core