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.