目的:要在URL中传递一个参数到服务端。但是name参数中有保留字符/,所以先用UrlEncode进行编码。测试代码如下:[Fact]public async void GetByName_TestAsync(){ var name = WebUtility.UrlEncode("aa/bbc"); var response = await Client.GetAsync($"api/users/{name}");
var user = await response.Content.ReadAsAsync<UserDto>();
user.Should().NotBeNull();
}服务端API:[HttpGet("{name}")]public async Task<UserDto> Get(string name){ return await _userAppService.GetUserByNameAsync(name);
}结果查不到name=aa/bbc的user。通过debug发现,请求的结果是404,本来以为是MVC解码了URL再进行路由匹配,因此请求的路径就变成了aa/bbc。但通过在浏览器中发起请求,就可以等到编码后的值aa%2Fbbc,所以判断这是HttpClient的问题,它在发起请求之前对URL作了手脚。那么如何通过URL传递带有保留字符(/)的参数呢?
1 回答
- 1 回答
- 0 关注
- 1213 浏览
添加回答
举报
0/150
提交
取消