我一直在编码。有时会有一个,两个,三个或更多参数:
$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
param吗?
答案 0 :(得分:1)
您应该能够通过
为Retrieve
方法定义方法访问名称
[HttpGet("Retrieve")]
并继续使用查询参数,就像您最初没有弄乱路线一样。