#c# #api #asp.net-core #controller #asp.net-core-3.1
#c# #API #asp.net-core #контроллер #asp.net-core-3.1
Вопрос:
Допустим, у нас есть API, который получает URL-адреса в одном из действий своего контроллера. Как это выполнимо в Net Core 3.1? Если я правильно понимаю, то https://www.test.com/anothertest/test испортит маршрутизацию к контроллеру?
Пример кода ниже
[Route("api/[controller]")]
public class TestController : Controller
{
[HttpPost("{url}")]
public ActionResult<string> Post(string url)
{
// I want this to work! The url should be the full url specified i.e. https://www.myawesome.com/url/with/slashes
}
}
Итак, если я вызову https://localhost:5001/api/Test/https://www.url.com/with/slashes я бы получил https://www.url.com/with/slashes в качестве аргумента входящего URL-адреса.
Комментарии:
1. Привет, @Tomato, ты хочешь получить строку url в действии?
Ответ №1:
Если вы передаете https://www.url.com/with/slashes
как часть URL, «/» не будет распознан.
Обычно самый простой способ передать URL-адрес — через строку запроса.
Вы можете изменить свой код, как показано ниже.
[HttpPost]
public ActionResult<string> Post(string url)
{
//...
}
Тогда URL-адрес должен быть
https://localhost:xxxxx/api/test/?url=https://www.url.com/with/slashes
Комментарии:
1. Ну, это то, чего я хотел избежать :(. Одно небольшое исправление заключается в том, что URL будет
https://localhost:xxxxx/api/test?url=https://www.url.com/with/slashes