POST API 平台中出现多个 uri

Posted

技术标签:

【中文标题】POST API 平台中出现多个 uri【英文标题】:Multiple uri occurrences in POST API platform 【发布时间】:2021-10-10 08:55:22 【问题描述】:

目的是将订单实体和产品关联为一个订单可以有多个产品,一个产品可以属于多个订单

这是我的订单类


class Order


//..........

/**
     * @ORM\ManyToMany(targetEntity=Product::class, mappedBy="cart")
     *
     * @Groups("admin:read", "admin:write")
     */
    private $products;

//..........


   

这是我的产品类


class Product

    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     *
     * @Groups("admin:read","media_object_read")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=255)
     *
     * @Groups("admin:read", "admin:write","media_object_read")
     *
     * @Assert\NotBlank(
     *     message = "The product name should not blank"
     * )
     *
     */
    private $name;

//..........

当我尝试发布与多次相同 uri 相关的订单时,只写入一个。

这是一个例子:

burpsuite screenshoot

如您所见,我发布了 2 次 api/products/1,但在回复中只出现了一次。

你能解释一下如何处理吗?

【问题讨论】:

【参考方案1】:

如果您尝试使用产品列表创建订单,我认为最好的方法是量化产品。在您的示例中,如果您想要一个包含 2 个 product 1 的订单,您应该有类似的内容:


  "products": [
    
      "id": "/api/products/1",
      "quantity": 2
      
  ]

希望对您有所帮助!

【讨论】:

我应该在产品表上创建一个数量字段吗?

以上是关于POST API 平台中出现多个 uri的主要内容,如果未能解决你的问题,请参考以下文章