【问题标题】:.NET core API controller never recieves body from Angular client.NET 核心 API 控制器从不接收来自 Angular 客户端的正文
【发布时间】:2019-04-16 01:29:24
【问题描述】:

我有一个订单 API。在这里,我尝试添加来自用户的订单,以便接收完整的 Order 对象。这是我控制器中的方法:

 [HttpPost("addOrder")]
 public IActionResult addOrder([FromBody] Order order)

这是我的模型@服务器端:

public class Order
{
    public string OrderId { get; set; }
    public User User { get; set; }
    public double TotalOrder { get; set; }
    public IEnumerable<OrderItem> OrderItems { get; set; }
    public Order()
    {
        OrderItems = new List<OrderItem>();
    }
}

public class OrderItem
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public string ProductName { get; set; }
    public double Price { get; set; }
    public int Quantity { get; set; }
    [ForeignKey("CartId")]
    public Order Order { get; set; }
    public string OrderId { get; set; }
}

public class User
{
    public string firstName { get; set; }
    public string lastName { get; set; }
    public string adress { get; set; }
}

当我尝试通过 Postman 使用以下正文测试我的方法时,它会到达我的 API,并且整个 Order 都包含在我的 Order 参数中:

{
    "OrderId": "OrderIDTest",
    "User": {
        "firstName": "FNT",
        "lastName": "LNT",
        "adress": "AT"
    },
    "TotalOrder": "999",
    "OrderItems": [
            {
                "ProductName": "Shoe 1",
                "Price": "99",
                "Quantity": 2
            },
             {
                "ProductName": "Shoe 2",
                "Price": "299",
                "Quantity": 4
            }
        ]
   }

但是当我通过我的 Angular 发送它时,我永远不会到达我的 addOrder 端点。这是我在控制台日志中打印出来的对象:

我的 Angular 服务:

createOrder(order: Order) {
console.log(order);
let header = new HttpHeaders({'Content-Type': 'application/json'})
return this.HttpClient.post("https://localhost:44369/api/order/addOrder", order, { headers: header });

}

顺便说一句,我知道地址拼写错误

【问题讨论】:

  • 请在“网络”选项卡中分享完整的请求。
  • 它永远不会被添加,但上面的行 (console.log(order)) 在按钮单击时会被打印出来

标签: angular asp.net-core asp.net-core-webapi


【解决方案1】:

我认为问题可能是 请求未订阅,这是常见问题之一。这就是请求永远不会发送到 API 的原因。

请分享网络请求,以便我更好地分析。

【讨论】:

  • 点击按钮确实会进入 createOrder 方法(它会在每次点击时打印出对象)但在网络选项卡下没有添加任何请求
  • 现在我理解你了,你是对的。我需要先订阅请求
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-07
  • 2020-07-08
  • 2018-02-28
  • 2021-06-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多