API do Magento 2 obtendo erro '% fieldName é um campo obrigatório'?

8

Não estou obtendo resultado (id) enquanto estiver usando o método POST usando url is rest / V1 / hello / test / 3

Captura de tela :insira a descrição da imagem aqui

Eu segui este link Para referência, clique aqui

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>

Agora limpei o cache e o pagecache e abri o aplicativo postmen e mantive o URL como http://10.0.0.33/nagarajuM2/rest/V1/hello/test/3

mas estou recebendo erro.

Por favor, me ajude.

Nagaraju K
fonte
Você está enviando solicitação POST e em que dados está enviando?
Emipro Technologies Unip. Ltd.
Na verdade, eu quero imprimir o valor id usando o método post, portanto, eu usei o mesmo conceito que sempre inchoo seguiu. e na url eu estou usando como rest / V1 / Olá / nome / 4
Nagaraju K
11
Para imprimir primeiro, você deve enviar dados do POST como json: {"id": {}}
Emipro Technologies Pvt. Ltd.
ok, deixe-me tentar ..
Nagaraju K
Obrigado @Emipro technologies agora, obtive o resultado. obrigado por você ajuda. Prntscr.com/g0d53x
Nagaraju K

Respostas:

6

Você está enviando uma solicitação POST e também precisa enviar dados na solicitação POST no formato json, como:{ "id": {}}

E tem que definir Content-Type:application/jsonno cabeçalho http.

Emipro Technologies Pvt. Ltd.
fonte
Assim como temos que mencionar “Content-Type: application / json” i a seção de cabeçalho prntscr.com/g0d96z
Nagaraju K
6

Atualize os comentários da função corretamente para o arquivo de interface e a classe que o implementa.

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

Eu estava recebendo os mesmos problemas, então notei que estava usando o POST em vez do GET , alterando-o, os problemas foram resolvidos.

Rafael Corrêa Gomes
fonte