【发布时间】:2014-06-09 14:24:12
【问题描述】:
我一直是这样编码的。有时有一个、两个、三个或更多参数:
$http({ url: '/api/Topic/Retrieve',
method: "GET",
params: {
subjectId: sub
}
})
结果是这样的,所有查询参数都作为查询字符串的一部分:
GET /api/Topic/Retrieve?subjectId=1 HTTP/1.1
我的 WebAPI 控制器如下所示:
[HttpGet]
public async Task<IHttpActionResult> Retrieve(int subjectId)
{
var topics = await db.Topics
.Include(q => q.SubTopics)
.Where(q => q.SubjectId == subjectId)
.ToListAsync();
return Ok(topics);
}
这可行,但现在我正在设置 Asp.Net 属性路由装饰,当我使用查询字符串传递数据时,没有简单的方法可以做到这一点。那么如果有一个、两个或三个参数,我应该执行以下操作吗?
GET /api/Topic/1 HTTP/1.1
GET /api/Topic/1/2 HTTP/1.1
GET /api/Topic/1/2/abcd HTTP/1.1
或者或者我应该编码参数in the body,然后在Asp.Net方法的参数之前使用:[FromBody]?还有一个问题。如果我在正文中对参数进行编码,那么我将如何使用 AngularJS 来做到这一点。我应该在 $http 调用中使用 data 参数吗?
【问题讨论】:
标签: asp.net asp.net-mvc angularjs asp.net-web-api