Magento 2: How to Pass Multi-Dimensional Array as an Argument in REST API

How to Pass Multi-Dimensional Array as an Argument in REST API M2

Hello Magento Friends,

In this Magento 2 tutorial guide, I will show How to Pass a Multi-Dimensional Array as an Argument in REST API in Magento 2.

A multi-dimensional array is an array that contains one or more arrays as its elements. In other words, each element of a multi-dimensional array can itself be an array.  REST API allows you to interact with Magento programmatically. 

However, there are instances where you might need to pass multi-dimensional arrays as arguments in your REST API calls, and this can be a bit tricky. In this blog post, we’ll explore how to do just that.

Steps to Pass Multi-Dimensional Array as an Argument in REST API in Magento 2:

Step 1: First, we need to create a “webapi.xml“ file inside our extension at the following path

app\code\Vendor\Extension\etc\webapi.xml

And add the code as follows

<?xml version="1.0" ?>
<routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Webapi:etc/webapi.xsd">
    <route method="POST" url="/V1/vender-extension/submitform">
        <service class="Vendor\Extension\Api\PostManagementInterface" method="setFormData"/>
        <resources>
            <resource ref="anonymous"/>
        </resources>
         <data>
            <parameter name="orderarray" force="true">%orderarray%</parameter>
        </data>
    </route>
</routes>

Step 2: Now, we need to create a “di.xml“ file inside our extension at the following path

app\code\Vendor\Extension\etc\di.xml

Then include the following piece of code

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <preference for="Vendor\Extension\Api\PostManagementInterface" type="Vendor\Extension\Model\PostManagement" />
</config>

Step 3: Now, we need to create a “PostManagementInterface.php“ file inside our extension at the following path

app/code/Vendor/Extension/Api/PostManagementInterface.php

And add the code as mentioned below

<?php

namespace Vendor\Extension\Api;

interface PostManagementInterface
{

    /**
     * SET form data
     * @param mixed $orderarray
     * @return mixed
     */
    public function setFormData($orderarray);
}

Step 4: Now, we need to create a “PostManagementInterface.php“ file inside our extension at the following path

app/code/Vendor/Extension/Model/PostManagement.php

After that, add the following code

<?php

namespace Vendor\Extension\Model;

use Vendor\Extension\Api\PostManagementInterface;

class PostManagement implements PostManagementInterface
{
    public function setFormData($orderarray)
    {
        $data = [];
        $requestData = json_decode(file_get_contents('php://input'), true);
        $getOrderArray = $requestData['orderarray'];
        print_r($getOrderArray);

        $data = ["status"=>true, "message"=> "passes data successfully."];
        return [$data];
    }
}

You need to call above API as per below parameters.

{
    "orderarray": [
        {"orderId": "1", "comment": "test order"},
        {"orderId": "2", "comment": "demo order"}
    ]
}

Conclusion:

Hope you understood How to Pass Multi-Dimensional Array as an Argument in REST API in Magento 2. If you have any doubt, let me know through the comment section and I will quickly get back to you with the solution. Alternatively, Hire a Magento Developer for the custom requirements of your Magento 2 store. Share the tutorial with your friends and stay connected with us for more such Magento 2 solutions.

Happy Coding!

Previous Article

What Are Micro And Macro Environment Business Factors?

Next Article

10 Best FREE Image Optimization Tools for Image Compression

Write a Comment

Leave a Comment

Your email address will not be published. Required fields are marked *

Get Connect With Us

Subscribe to our email newsletter to get the latest posts delivered right to your email.
Pure inspiration, zero spam ✨