无法加载资源:服务器的状态为404()

时间:2020-03-23 22:06:03

标签: c# rest api .net-core

我正在.net核心中编写REST API。我正在尝试使用Postman测试API,但出现错误消息

无法加载资源:服务器的状态为404()

我知道路线不匹配时会发生此错误。不确定,我在做什么错的路线。下面是我的代码,其中“路线”位于顶部:

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);
        }
    }
}

我要在邮递员中测试的网址如下:

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

我对API非常陌生,这是我正在编写的第一个API。下面是应用程序结构的图像。它非常简单:

enter image description here

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

404错误意味着未找到。这意味着邮递员无法找到您要击中的终点。

  1. 您的[Route]属性需要更新。该端点(控制器)的根是RecLoadPrime。所以摆脱那部分。如果您只是想测试,请将其更新为[Route("insert")]
    • 在URL中使用?表示您正在传递查询参数。通常用于GET请求而不用于POST请求。
    • Web API希望您使用模型绑定来传递参数。含义将post参数映射到强类型的.NET对象,而不是单个参数。另外,您也可以在API方法上接受一个FormDataCollection参数,以获取所有POST值的名称值集合。
    • 例如:创建一个名为Card的小类,其属性为startDateendDate。使它们成为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

确保在控制器中设置断点。不确定您如何设置项目,但我建议阅读更多有关如何使用ASP.NET Core设置Web API的信息。查看RESTful设计,以了解如何最佳设置这些端点。

祝你好运!

答案 1 :(得分:2)

控制器和操作上的当前路由配置将导致路由部分重复。具体来说,该操作将与之关联的路由为“ api / RecLoadPrime / RecLoadPrime / insertRecLoadData / {RecStartDate} / {RecEndDate}”。

请考虑如下从操作路线属性中删除RecLoadPrim/前缀:

 [Route("insertRecLoadData/{RecStartDate}/{RecEndDate}")]