Magento 2 Api obtient l'erreur '% fieldName est un champ obligatoire'?


8

Je n'obtiens pas de résultat (id) lorsque j'utilise la méthode POST en utilisant l'url est reste / V1 / bonjour / test / 3

Capture d'écran :entrez la description de l'image ici

J'ai suivi ce lien Pour référence, veuillez cliquer ici

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>

Maintenant, j'ai effacé le cache et la pagecache et ouvert l'application des facteurs et conservé l'URL comme http://10.0.0.33/nagarajuM2/rest/V1/hello/test/3

mais je reçois une erreur.

Sil te plait aide moi.


Vous envoyez une demande POST et quelles sont les données que vous envoyez?
Emipro Technologies Pvt. Ltd.

En fait, je veux imprimer la valeur id en utilisant la méthode post, j'ai donc utilisé le même concept que jamais inchoo a suivi. et dans l'url que
j'utilise

1
Pour l'impression, vous devez d'abord envoyer des données POST comme json: {"id": {}}
Emipro Technologies Pvt. Ltd.

ok laissez-moi essayer ..
Nagaraju K

Merci aux technologies @Emipro maintenant j'ai obtenu le résultat. merci pour votre aide. prntscr.com/g0d53x
Nagaraju K

Réponses:


6

Vous envoyez une demande POST, vous devez donc également envoyer des données dans une demande POST au format json comme:{ "id": {}}

Et doivent définir Content-Type:application/jsondans l'en-tête http.


De plus, nous devons mentionner «Content-Type: application / json» dans la section d'en-tête prntscr.com/g0d96z
Nagaraju K

6

Mettez à jour les commentaires de fonction correctement pour le fichier d'interface et la classe qui l'implémentent.

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

0

Je recevais les mêmes problèmes, puis j'ai remarqué que j'utilisais POST au lieu de GET , en le modifiant, les problèmes étaient résolus.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.