Mar*_*yan 4 c# unit-testing httpclient asp.net-web-api
在我的 WebApi 中,我想让方法女巫接受 ID 列表作为参数并将它们全部删除。所以这个方法看起来像下面的代码。
[HttpDelete]
public IHttpActionResult DeleteList([FromBody]IEnumerable<int> templateIds)
Run Code Online (Sandbox Code Playgroud)
我还需要使用 .NET 的 HttpClient 为此编写单元测试。所以我的问题是:如何使用 HttpClient DeleteAsync 将 Id 的数组/列表传递给 WebApi?
:)
据我所知,在 Web Api 中忽略在 HTTP DELETE 中发送消息正文。另一种方法是从 Uri 中获取 Id 列表:
[HttpDelete]
public void DeleteList([FromUri]IEnumerable<int> ids)
Run Code Online (Sandbox Code Playgroud)
然后使用以下网址调用网址: http://server/api/ControllerRoute/ids=1&ids=2
要从 HttpClient 调用它,您需要直接创建 DeleteAsync,因为所有数据都在 Url 中。
您还可以打破 System.Web.HttpUtility 为您在 Url 中构建查询字符串,如下所示:
var httpClient = new HttpClient();
var queryString = HttpUtility.ParseQueryString(string.Empty);
foreach (var id in ids)
{
queryString.Add("ids", id.ToString());
}
var response = httpClient.DeleteAsync(queryString.ToString());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3430 次 |
| 最近记录: |