% не принимается как часть строкового параметра в Web API

#angular #asp.net-web-api #asp.net-core-webapi #http-get

#angular #asp.net-web-api #asp.net-core-webapi #http-get

Вопрос:

Я хочу отправить строковый параметр в конечную точку моего веб-API. Строка: TCmBqAKPGVMlTQ2Exw/viQ== , поэтому, как мы видим, она содержит / . Я кодирую эту строку, и теперь значение равно TCmBqAKPGVMlTQ2Exw/viQ== , но я все еще не могу достичь конечной точки API.

Это ошибка, которую я получаю:

 headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, lazyInit: ƒ}
message: "Http failure response for http://localhost:31676/api/TokenTest/check-token-validation/96/TCmBqAKPGVMlTQ2Exw/viQ==:
  

404 Не найдено»
имя: «HttpErrorResponse»
ok: false
статус: 404
statusText: «Не найдено»
url: «http://localhost:31676/api/TokenTest/check-token-validation/96/TCmBqAKPGVMlTQ2Exw/viQ==»
proto: HttpResponseBase

Ответ №1:

Если вы используете атрибутивную маршрутизацию, вы можете попробовать приведенный ниже пример кода :

 [Route("api/[controller]")]
[ApiController]
public class TokenTestController : ControllerBase
{
    [HttpGet]
    [Route("check-token-validation/{id}")]
    public ActionResult<IEnumerable<string>> CheckTokenValidation(int id, string para)
    {
        return new string[] { "value1", "value2" };
    }
}
  

Если запрос выполняется https://localhost:xxxx/api/TokenTest/check-token-validation/96?para=TCmBqAKPGVMlTQ2Exw/viQ== , вы получите правильный результат :

введите описание изображения здесь

Но всегда предлагается кодирование URL.

Ответ №2:

Вы можете использовать функцию encodeURIComponent(yourstring) для кодирования специального символа в URL.

И измените URL на http://localhost:31676/api/TokenTest/check-token-validation/96?parameterName=TCmBqAKPGVMlTQ2Exw/viQ==