Не удалось загрузить ресурс: сервер ответил со статусом 404 () - PullRequest
0 голосов
/ 24 марта 2020

Я пишу REST API в ядре net. Я пытаюсь протестировать API с помощью Postman и получаю сообщение об ошибке:

Не удалось загрузить ресурс: сервер ответил со статусом 404 ()

I знаю, что эта ошибка возникает, когда маршрут не совпадает. Не уверен, что я делаю не так с маршрутом. Ниже приведен мой код с Маршрутом вверху:

namespace RecLoad.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class RecLoadPrimeController : ControllerBase
    {
        [Route("RecLoadPrime/insertRecLoadData/{RecStartDate}/{RecEndDate}")]
        [HttpPost]
        public void insertRecLoadData(string RecStartDate, string RecEndDate)
        {
            RecLoadDataProvider dataProvider = new RecLoadDataProvider();
            dataProvider.InsertCardsData(RecStartDate, RecEndDate);
        }
    }
}

URL-адрес, который я пытаюсь проверить в Postman, указан ниже:

 https://localhost:44360/api/RecLoadPrime/insertRecLoadData/?RecStartDate=01/01/2020&RecEndDate=01/02/2020

Я очень новичок в API, это это первый API, который я пишу. Ниже изображение для структуры приложения. Это чрезвычайно просто:

enter image description here

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

3 голосов
/ 24 марта 2020

Ошибка 404 означает, что не найден. Это означает, что Почтальон не может найти конечную точку, в которую вы пытаетесь попасть.

  1. Ваш атрибут [Route] необходимо обновить. root этой конечной точки (контроллера) это RecLoadPrime. Так что избавься от этой части. Если вы просто пытаетесь проверить, обновите его до [Route("insert")].
    • Использование ? в вашем URL означает, что вы передаете параметры запроса. Которые обычно используются в запросах GET, а не в запросах POST.
    • Web API ожидает, что вы будете использовать привязку модели для передачи параметров. Значение означает сопоставление параметров записи строго типизированному объекту. NET, а не отдельным параметрам. Кроме того, вы можете также принять параметр FormDataCollection в вашем методе API, чтобы получить коллекцию значений имен всех значений POST.
    • Например: создайте небольшой класс с именем Card со свойствами startDate и endDate. Сделай их DateTime. Теперь используйте это в сигнатуре метода public void insertRecLoadData([FromBody]Card card)
  2. В Postman теперь вы собираетесь использовать опцию Body и создать представление JSON этого нового класса, который мы создали.
    • Например: { "startDate": "2020-03-23", "endDate": "2020-03-27" }
    • В маршруте вы будете использовать: POST | https://localhost:44360/api/insertRecLoadData/insert

Убедитесь, что вы установили Точки останова в вашем контроллере. Не уверен, как вы настроили свой проект, но я бы посоветовал прочитать больше о том, как настроить веб-API с помощью ASP. NET Core. Изучите дизайн RESTful, чтобы получить представление о том, как лучше настроить эти конечные точки.

Удачи!

2 голосов
/ 24 марта 2020

Текущая конфигурация маршрута на вашем контроллере и на вашем действии приведет к дублированию раздела в вашем маршруте. В частности, маршрут, с которым будет связано действие, будет «api / RecLoadPrime / RecLoadPrime / insertRecLoadData / {RecStartDate} / {RecEndDate}».

Рассмотрите возможность удаления префикса RecLoadPrim/ из атрибута маршрута действия следующим образом :

 [Route("insertRecLoadData/{RecStartDate}/{RecEndDate}")]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...