如何在Magento 2自定义Rest API中传递数组?

时间:2019-04-22 07:01:44

标签: rest api magento2

Magento 2自定义rest api,我无法在模态存储库中获取数组,

如何将数组作为参数传递?

Webapi.xml

    <route method="POST" url="/V1/topmarkens/productlists">
        <service class="Meridian\TopMarken\Api\TopMarkenRepositoryInterface" 
           method="productFilterByBrand"/>
        <resources>
            <resource ref="anonymous"/>
        </resources>
        <data>
            <parameter name="types" force="true">%types%</parameter>
        </data>
    </route>

TopMarkenRepositoryInterface.php

    /**
     * return placed order status
     * @param string[] $types
     * @return \Meridian\TopMarken\Api\Data\TopMarkenInterface
     */
    public function productFilterByBrand($types);

TopMarkenRepository.php

   public function productFilterByBrand($types){
        $vendor_data = json_decode($types);

        echo "<pre>"; print_r($vendor_data); die;

        return $vendor_data;
    }

2 个答案:

答案 0 :(得分:0)

直接发送数组作为参数不是执行POST请求的好方法。我建议您发送一个json对象,您可以在其中将数组作为对象的第一个元素。

答案 1 :(得分:0)

我有这个json:

{
   "customerEmail":"myFancyEmail@gmail.com",
    "items": [
        {"sku":"sku-1", "qty":"1"},
        {"sku":"sku-2", "qty":"2"}
    ]
}

这是我的界面:

interface OrderInterface
{
    /**
     * @param string $customerEmail
     * @param mixed $items
     * @return bool
     * @api
     */
    public function create(string $customerEmail, $items) : bool;
}

使用string[]arraymixed[]并不适合我。仅mixed