我正在研究 .net core 3.1 api
调用 api 时出错。服务器响应 405
jquery.min.js:2 GET https://localhost:44345/api/Home/AddUpdateUser?callback=jQuery351026836393378483203_1613635815143&name=Ahsan&email=ahsan%40gmail.com&password=asds5553R>net&password=asds1553R15555R155555R153R
这是我的 api 控制器类
public class HomeController : ControllerBase
{
private IRegisterUser _user;
private IMapper _mapper;
public HomeController(IRegisterUser user, IMapper mapper)
{
_user = user;
_mapper = mapper;
}
//api/Home
[HttpGet]
public IActionResult GetAllUser()
{
var users = _user.GetAllUser();
if (users != null)
{
var userVm = _mapper.Map<List<RegisterUserVm>>(users);
return Ok(userVm);
}
return Ok("Some error occured");
}
//api/Home
[HttpPost]
[Route("[action]")]
[Route("api/Home/AddUpdateUser")]
public IActionResult AddUpdateUser([FromBody] RegisterUserVm userVm)
{
//userVm.MacAddress = GetMacAddress();
var user = _mapper.Map<User>(userVm);
var msg = _user.AddUser(user);
string[] message = { "200", "testing" };
return Ok(message);
}
//api/Home/{id}
[HttpDelete]
public IActionResult DeleteUser(Guid Id)
{
var msg = _user.DeleteUser(Id);
return Ok(msg);
}
[HttpGet]
[Route("[action]")]
[Route("api/Home/GetUserById")]
public IActionResult GetUserById(Guid Id)
{
var user = _user.GetUserById(Id);
var userVm = _mapper.Map<RegisterUserVm>(user);
if (userVm != null)
return Ok(userVm);
return Ok("Some error occured");
}
}
这是我的ajax调用
<script>
$("#button").click(function (e) {
e.preventDefault()
var data = {
name: "Ahsan",
email: "ahsan@gmail.com",
password: "asdsdasda"
};
jQuery.support.cors = true;
$.ajax({
type: "POST",
dataType: 'jsonp',
url: "https://localhost:44345/api/Home/AddUpdateUser",
data: data,
contentType: "application/json; charset=utf-8",
success: function (result) {
debugger;
alert('ok');
},
error: function (result) {
debugger;
alert('error');
}
});
});
</script>
答案 0 :(得分:0)
把你的ajax改成这样:
$.ajax({
url: "https://localhost:44345/api/Home/AddUpdateUser",
data: data,
success: function (result) {
debugger;
alert('ok');
},
error: function (result) {
debugger;
alert('error');
}
});
并从您的操作标题中删除 [post] 并修复路由:
[Route("~/api/Home/AddUpdateUser")]
public IActionResult AddUpdateUser([FromBody] RegisterUserVm userVm)
{
....
}
并且您必须通过添加启动此代码来解决 CORS 问题:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(o => o.AddPolicy("AllowAnyOrigins", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
}));
services.AddControllers()
.AddNewtonsoftJson(options =>
options.SerializerSettings.ContractResolver =
new CamelCasePropertyNamesContractResolver());
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseCors("AllowAnyOrigins");
//app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
````