blazor服务器应用程序中的自定义loginwebapi问题(使用内置的webapi框架)



我创建服务器端项目(blazor服务器应用程序(,然后使用框架中内置的webapi

我在blazor服务器端中创建了一个用于登录的自定义webapi

查看我的代码:

namespace CrudBlazorServerApp.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class EmpsController : ControllerBase
{
private readonly sqldbcontext _context;
public EmpsController(sqldbcontext context)
{
_context = context;
}

//if i am comment PostEmp method then below method(checkLogin) work fine problem is both method not work at a time
[HttpPost]
public async Task<ActionResult<Emp>> PostEmp(Emp emp)
{
_context.emps.Add(emp);
await _context.SaveChangesAsync();
return CreatedAtAction("GetEmp", new { id = emp.empid }, emp);
}
//if i am comment checklogin method then above method(postemp) work fine
//custom login webapi
//[HttpPost]
//[Consumes("application/json")]
//public Emp checkLogin(string username, string password)
//{
//    Emp hasemp = _context.emps.Where(e => e.username == username & e.password == password).FirstOrDefault();
//    return hasemp;
//}

如果我评论checklogin方法,那么postemp工作正常,请查看此图像201创建

如果我取消注释checklogin方法,那么postemp不起作用,请参阅此图像204 NoContent

为什么webapi(postemp和checklogin(不能同时工作?

问题是因为两个方法都有相同的端点。因为您的路由配置是[Route("api/[controller]")],并且您的Actions标记为[HttpPost],这意味着您的端点将是api/Emps,而不是api/Emps/PostEmpapi/Emps/checkLogin

因此,您需要更改为以下其中一项才能使其工作:

选项1:

将您的路线更改为[Route("api/[controller]/[action]")],然后您的终点将是api/Emps/PostEmpapi/Emps/checkLogin

选项2:

更改HttpPost以传递模板为[HttpPost("PostEmp")][HttpPost("checkLogin")](这些名称可以更改为您喜欢的任何名称,而无需更改方法名称(

相关内容

  • 没有找到相关文章

最新更新