我执行以下操作,从自动完成输入中给出问题标题的情况下,从我的API获取问题模型。此操作适用于不带问号的标题(例如,您几岁)。但是,如果我给标题添加问号(例如,您几岁?),则不会返回该模型,因为在此过程中将删除问号。
我尝试了HttpUtility.UrlDecode()
方法,但是没有运气。
在下面您可以找到我的请求
[HttpGet]
public async Task<IActionResult> GetQuestionAsync(string question) {
Questions q = new Questions();
HttpClient client = _api.Initial();
HttpResponseMessage res = await client.GetAsync("api/Search/" + question);
if (res.IsSuccessStatusCode) {
var result = res.Content.ReadAsStringAsync().Result;
q = JsonConvert.DeserializeObject<Questions>(result);
}
return View(q);
}
[Produces("application/json")]
[HttpGet]
[Route("{keyword}")]
public async Task<IActionResult> GetByString([FromRoute(Name = "keyword")] string keyword) {
if (!ModelState.IsValid) {
return BadRequest(ModelState);
}
var question = await _context.Questions
.SingleOrDefaultAsync(m => m.Question == HttpUtility
.UrlDecode(keyword.ToString()));
if (question == null) {
return NotFound();
}
return Ok(question);
}
我希望能够从我的API中获得包括?
在内的问题。有没有办法做到这一点?
请注意,在Swagger中,API Get请求工作正常!
答案 0 :(得分:1)
您需要使用 HttpUtility.UrlEncode
-而不是 Decode
。您需要先将?
更改为编码字符,然后再通过URL发送。 HttpUtility.UrlDecode
则相反。