我正在.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。下面是应用程序结构的图像。它非常简单:
任何帮助将不胜感激。
答案 0 :(得分:3)
404错误意味着未找到。这意味着邮递员无法找到您要击中的终点。
[Route]
属性需要更新。该端点(控制器)的根是RecLoadPrime
。所以摆脱那部分。如果您只是想测试,请将其更新为[Route("insert")]
。
?
表示您正在传递查询参数。通常用于GET请求而不用于POST请求。 FormDataCollection
参数,以获取所有POST值的名称值集合。 Card
的小类,其属性为startDate
和endDate
。使它们成为DateTime
。现在在方法签名public void insertRecLoadData([FromBody]Card card)
{ "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}")]