我正在使用.Net MVC4 Web来(希望)实现一个RESTful应用程序接口。我需要向系统传递一些参数,让它执行一些操作,然后返回一个对象列表作为结果。具体地说,我传入了两个日期,并返回介于它们之间的记录。我还跟踪返回的记录,以便后续调用不会在系统中重新处理。
我考虑了几种方法:
What is best way to pass multiple query parameters to a restful api?
似乎正确的REST实践表明,当拉取数据时,您应该使用GET。然而,GET也应该是零的(不产生副作用),我想知道我的具体实现是否违反了这一点,因为我在API系统中标记了记录,因此我产生了副作用。
这也让我想到了支持可变参数的问题。如果输入参数列表发生变化,如果经常发生这种情况,则必须重新定义选项3的路由将是乏味的。如果参数是在运行时定义的,会发生什么情况...
在任何情况下,对于我的特定实现,哪个选择(如果有的话)似乎是最好的?
发布于 2012-06-08 03:15:06
这个记录标记是什么意思?如果这仅用于日志记录目的,我将使用GET并禁用所有缓存,因为您希望记录对此资源的每次查询。如果记录标记有另一个目的,那么POST就是一种方式。用户应该知道,他的行为会影响系统,POST方法是一个警告。
发布于 2014-11-05 04:07:01
我认为最简单的方法是简单地使用AttributeRouting
。
很明显,在你的控制器中,你为什么要在你的全局WebApiConfig
文件中呢?
示例:
[Route("api/YOURCONTROLLER/{paramOne}/{paramTwo}")]
public string Get(int paramOne, int paramTwo)
{
return "The [Route] with multiple params worked";
}
{}
名称需要与您的参数匹配。
就这么简单,现在你有了一个单独的GET
来处理这个实例中的多个参数。
发布于 2013-05-15 06:19:00
只需向WebApiConfig
条目添加一个新路由即可。
例如,调用:
public IEnumerable<SampleObject> Get(int pageNumber, int pageSize) { ..
添加:
config.Routes.MapHttpRoute(
name: "GetPagedData",
routeTemplate: "api/{controller}/{pageNumber}/{pageSize}"
);
然后将参数添加到HTTP调用中:
GET //<service address>/Api/Data/2/10
https://stackoverflow.com/questions/10937524
复制相似问题