首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将多个参数传递给ASP.Net Web API GET?

如何将多个参数传递给ASP.Net Web API GET?
EN

Stack Overflow用户
提问于 2012-06-08 02:18:49
回答 12查看 337.8K关注 0票数 140

我正在使用.Net MVC4 Web来(希望)实现一个RESTful应用程序接口。我需要向系统传递一些参数,让它执行一些操作,然后返回一个对象列表作为结果。具体地说,我传入了两个日期,并返回介于它们之间的记录。我还跟踪返回的记录,以便后续调用不会在系统中重新处理。

我考虑了几种方法:

  1. 将参数序列化为一个单独的JSON字符串,并在API中将其拆分。http://forums.asp.net/t/1807316.aspx/1
  2. Pass查询字符串中的参数。

What is best way to pass multiple query parameters to a restful api?

  • Defining路由中的参数: api/controller/date1/date2

  • Using,这是一个POST,本质上允许我使用params.

  • Researching ODATA传递对象,因为Web (目前)支持它。我还没有做太多的工作,所以我对它不是很熟悉。

似乎正确的REST实践表明,当拉取数据时,您应该使用GET。然而,GET也应该是零的(不产生副作用),我想知道我的具体实现是否违反了这一点,因为我在API系统中标记了记录,因此我产生了副作用。

这也让我想到了支持可变参数的问题。如果输入参数列表发生变化,如果经常发生这种情况,则必须重新定义选项3的路由将是乏味的。如果参数是在运行时定义的,会发生什么情况...

在任何情况下,对于我的特定实现,哪个选择(如果有的话)似乎是最好的?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2012-06-08 03:15:06

这个记录标记是什么意思?如果这仅用于日志记录目的,我将使用GET并禁用所有缓存,因为您希望记录对此资源的每次查询。如果记录标记有另一个目的,那么POST就是一种方式。用户应该知道,他的行为会影响系统,POST方法是一个警告。

票数 10
EN

Stack Overflow用户

发布于 2014-11-05 04:07:01

我认为最简单的方法是简单地使用AttributeRouting

很明显,在你的控制器中,你为什么要在你的全局WebApiConfig文件中呢?

示例:

代码语言:javascript
复制
    [Route("api/YOURCONTROLLER/{paramOne}/{paramTwo}")]
    public string Get(int paramOne, int paramTwo)
    {
        return "The [Route] with multiple params worked";
    }

{}名称需要与您的参数匹配。

就这么简单,现在你有了一个单独的GET来处理这个实例中的多个参数。

票数 148
EN

Stack Overflow用户

发布于 2013-05-15 06:19:00

只需向WebApiConfig条目添加一个新路由即可。

例如,调用:

代码语言:javascript
复制
public IEnumerable<SampleObject> Get(int pageNumber, int pageSize) { ..

添加:

代码语言:javascript
复制
config.Routes.MapHttpRoute(
    name: "GetPagedData",
    routeTemplate: "api/{controller}/{pageNumber}/{pageSize}"
);

然后将参数添加到HTTP调用中:

代码语言:javascript
复制
GET //<service address>/Api/Data/2/10 
票数 49
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10937524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档