Как правильно получить строку в формате url в ASP NET Core 3.1?

#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