% не принимается как часть строкового параметра в Web API - PullRequest
0 голосов
/ 03 апреля 2019

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

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

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

404 Не найдено " имя: "HttpErrorResponse" хорошо: ложь статус: 404 statusText: "Not Found" URL: "http://localhost:31676/api/TokenTest/check-token-validation/96/TCmBqAKPGVMlTQ2Exw%2FviQ%3D%3D" proto : HttpResponseBase

Ответы [ 2 ]

2 голосов
/ 04 апреля 2019

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

[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==, вы получите правильный результат:

enter image description here

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

1 голос
/ 03 апреля 2019

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

И изменить URL-адрес на http://localhost:31676/api/TokenTest/check-token-validation/96?parameterName=TCmBqAKPGVMlTQ2Exw%2FviQ%3D%3D

...