例如,我知道如何將對GET請求的查詢參數的支持添加到端點/resources
。這將是:如何將查詢參數添加到Web API的GET請求中
[HttpGet]
public async Task<IHttpActionResult> GetAll([FromUri] QueryData queryData) {
//... Do some stuff
}
在我的例子,QueryData
將包含類的所有我支持的查詢參數:
public class QueryParam {
public int Page { get; set; }
public int Size { get; set; }
}
話,那我可以叫端點:/resources?page=2&size=4
,併成功取回這些參數。
但是,如何做同樣的,但在終點:/resources/2
??
2
是URL的一部分,它指定資源的id
。
此刻,我的處理方法如下:
[HttpGet]
public async Task<IHttpActionResult> Get(int id) {
//Do some stuff...
}
這工作得很好,但後來我試圖修改爲:
[HttpGet]
public async Task<IHttpActionResult> Get(int id, [FromUri] QueryData queryData) {
//Do some stuff...
}
我希望它會工作,因爲它在另一種方法上做了,但事實並非如此。可能是因爲id
,它不是由查詢參數檢索,而是作爲URL路徑的一部分。
是否可以向這樣的URL添加查詢參數,並且能夠檢索id
和那些參數?
我很期待能夠調用端點:/resources/2?lang=en
我想過這個,但是Web API會在'GetAll(QueryData)'和'Get(QueryData)'方法之間找到一個不明確的地方,因爲它們都採用相同的參數,並且都綁定到'HttpGet' – 2014-12-03 18:38:47
總是爲id添加一個約束爲int。 – 2014-12-03 18:39:10
有一些資源具有字符串ID,因此不幸的是這不會是一個選項 – 2014-12-03 18:39:54