我正在开发一个简单的react + asp.net核心应用程序,我想在其中简单地将记录添加到数据库(使用EntityFramework核心创建)。有一个非常简单的表单,只有一个文本框和一个按钮。单击该按钮时,出现以下错误:
错误:请求失败,状态码为405
我在运行时进行了调试,并且未引发控制器类中的Create方法。也就是说,axios无法识别所提供的url。下面是客户端代码:
class Form extends Component {
state = { rubricName: '' }
handleFormSubmit = (event) => {
event.preventDefault();
axios({
method: 'post',
url: 'api/Rubric/Create',
data: {
title: this.state.rubricName,
},
headers: {
'Content-Type': 'text/plain;charset=utf-8',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE,PATCH,OPTIONS',
},
}).then(function (response) {
console.log(response);
}).catch(function (error) {
console.log(error);
});
这是控制器api类:
[Route("api/[controller]")]
public class RubricController : Controller
{
RubricDataAccessLayer objRubric = new RubricDataAccessLayer();
[HttpPost]
[Route("api/Rubric/Create")]
public int Create(string title)
{
return objRubric.AddRubric(new Rubric { Title = title });
}
}
关于我为什么会出现此错误的任何想法?
答案 0 :(得分:1)
您在请求中指定了错误的URL。如果控制器上只有一个Route
属性,则网址应为
api/Rubric
如果您同时保留两个网址,则结果网址为Route
属性的组合值
api/Rubric/api/Rubric/Create
如果您要覆盖操作网址而不将其与控制器一并用,只需添加前导/
(或~/
)
[HttpPost]
[Route("/api/Rubric/Create")]
public int Create(string title)
在这种情况下,请求网址应为
api/Rubric/Create