目的:要在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 回答
- 0 關注
- 1244 瀏覽
添加回答
舉報
0/150
提交
取消