#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==