Magento 2 Api Getting Error '% fieldName ist ein Pflichtfeld'?

8

Ich erhalte kein Ergebnis (ID), wenn ich die POST- Methode verwende. Die URL lautet rest / V1 / hello / test / 3

Screenshot :Geben Sie hier die Bildbeschreibung ein

Ich bin diesem Link gefolgt. Bitte klicken Sie hier

1) webapi.xml

<?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 url="/V1/hello/name/:name" method="GET">
            <service class="Inchoo\Hello\Api\HelloInterface" method="name"/>
            <resources>
                <resource ref="anonymous"/>
            </resources>
        </route>
        <route url="/V1/hello/test/:test" method="POST">
            <service class="Inchoo\Hello\Api\TestInterface" method="test"/>
            <resources>
                <resource ref="anonymous"/>
            </resources>
        </route>
    </routes>

2) TestInterface.php

<?php
namespace Inchoo\Hello\Api;

interface TestInterface
{
    /**
     * Returns greeting message to user
     *
     * @api
     * @param id $name Users id.
     * @return id Greeting message with users id.
     */
    public function test($id);
}

3) Test.php

<?php
namespace Inchoo\Hello\Model;
use Inchoo\Hello\Api\TestInterface;

class Test implements TestInterface
{
    /**
     * Returns greeting message to user
     *
     * @api
     * @param string $name Users name.
     * @return string Greeting message with users name.
     */
    public function test($id) {
        return "Hello How are you your id is:," .$id;
    }
}

4) di.xml

<?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="Inchoo\Hello\Api\HelloInterface" type="Inchoo\Hello\Model\Hello" />
    <preference for="Inchoo\Hello\Api\TestInterface" type="Inchoo\Hello\Model\Test" />
</config>

Jetzt habe ich Cache und Seitencache geleert und die Postboten-App geöffnet und die URL wie http://10.0.0.33/nagarajuM2/rest/V1/hello/test/3 beibehalten

aber ich bekomme Fehler.

Bitte hilf mir.

Nagaraju K.
quelle
Sie senden eine POST-Anfrage und welche Daten senden Sie?
Emipro Technologies Pvt. Ltd.
Eigentlich möchte ich den ID-Wert mit der Post-Methode drucken, daher habe ich das gleiche Konzept verwendet, was auch immer inchoo gefolgt ist. und in der URL verwende ich wie rest / V1 / hallo / name / 4
Nagaraju K
1
Zum Drucken müssen Sie zuerst POST-Daten wie json senden: {"id": {}}
Emipro Technologies Pvt. Ltd.
ok lass es mich versuchen ..
Nagaraju K
Dank @Emipro Technologies habe ich jetzt das Ergebnis. Danke für deine Hilfe. prntscr.com/g0d53x
Nagaraju K

Antworten:

6

Sie senden eine POST-Anfrage, daher müssen Sie auch Daten in einer POST-Anfrage im JSON-Format senden, z.{ "id": {}}

Und müssen Content-Type:application/jsonim http-Header setzen.

Emipro Technologies Pvt. GmbH.
quelle
Ebenso müssen wir "Content-Type: application / json" im Header-Bereich prntscr.com/g0d96z
Nagaraju K
6

Aktualisieren Sie die Funktionskommentare sowohl für die Schnittstellendatei als auch für die Klasse, die sie implementieren, korrekt.

interface TestInterface
{
    /**
     * Returns greeting message to user
     *
     * @param int $name
     * @return mixed
     */
    public function test($id);
}
Pankaj Pareek
quelle