Post Request 在 Postman 中给出 405 错误

时间:2021-01-23 16:04:13

标签: json asp.net-core asp.net-web-api postman asp.net-core-webapi

在我的 .Net Web Api 上,每个数据库表都有一个实体模型、请求模型和响应模型。当我向 MedTestOrder 发出发布请求时,收到 405 错误,但其他实体工作正常。我将发布 MedTestOrder 实体模型、请求模型、响应模型、控制器和服务的代码片段。模型包含外键,我怀疑我的错误可能来自那里。我可能错了,也可能没有。我只是需要帮助。

1 - 实体模型

namespace Africanbiomedtests.Entities
{
        public class MedTestOrder
    {
        [Key]
        public int Id { get; set; }
        public int? MedTestId { get; set; }
        [ForeignKey("MedTestId")]
        public MedTest MedTest { get; set; }
        public int? healthcareProviderId { get; set; }
        [ForeignKey("healthcareProviderId")]
        public HealthcareProvider healthcareProvider { get; set; }
        public int? accountId { get; set; }
        [ForeignKey("accountId")]
        public Account Account { get; set; }
        public int? newbornId { get; set; }
        [ForeignKey("newbornId")]
        public Newborn Newborn { get; set; }
        public string PaymentStatus { get; set; }
        public Boolean CompletionStatus { get; set; }
        public DateTime DateCreated { get; set; }
        public DateTime DateCompleted { get; set; }
        public DateTime? Updated { get; set; }

    }

}

2 - Api 请求模型

namespace Africanbiomedtests.Models.MedTestsOrder
{
    public class MedTestsOrderCreateRequest
    {
        [Required]
        public MedTest MedTest { get; set; }

        public HealthcareProvider healthcareProvider { get; set; }

        public Account Account { get; set; }

        public Newborn Newborn { get; set; }

        [Required]
        public string PaymentStatus { get; set; }
        public Boolean CompletionStatus { get; set; }

        [Required]
        public DateTime DateCreated { get; set; }

    }
}

3 - 响应模型

namespace Africanbiomedtests.Models.MedTestsOrder
{
    public class MedTestsOrderResponse
    {
        public int Id { get; set; }
        public MedTest MedTest { get; set; }
        public HealthcareProvider healthcareProvider { get; set; }
        public Account Account { get; set; }
        public Newborn Newborn { get; set; }
        public string PaymentStatus { get; set; }
        public Boolean CompletionStatus { get; set; }
        public DateTime DateCreated { get; set; }
        public DateTime DateCompleted { get; set; }

    }
}

4 - 控制器

[Authorize]
[HttpPost("create")]
public ActionResult<MedTestsOrderResponse> Create(MedTestsOrderCreateRequest model)
{
    var medTestOrder = _medTestOrderService.Create(model);
    return Ok(medTestOrder);
}

5 - 服务

public MedTestsOrderResponse Create(MedTestsOrderCreateRequest model)
        {

            // map model to new account object
            var medTestOrder = _mapper.Map<MedTestOrder>(model);
            medTestOrder.DateCreated = DateTime.UtcNow;


            // save account
            _context.MedTestOrder.Add(medTestOrder);
            _context.SaveChanges();

            return _mapper.Map<MedTestsOrderResponse>(medTestOrder);
        }

6 - Postman JSON 请求

{
    "medTestId": 3,
    "healthcareProviderId": 3,
    "accountId": 1004,
    "newbornId": 1,
    "paymentStatus": "Complete Payment",
    "completionStatus": "1",
    "dateCompleted": "01/14/2021"
}

我现在非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

谢谢@Marius 和@Karney,我意识到我没有使用正确的端点。我需要将“/create”添加到我的端点。