Magento 2 Api Obteniendo error '% fieldName es un campo obligatorio'?


8

No obtengo resultado (id) mientras uso el método POST usando url es rest / V1 / hello / test / 3

Captura de pantalla :ingrese la descripción de la imagen aquí

He seguido este enlace. Para referencia, haga clic aquí.

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>

Ahora borré el caché y el caché de página y abrí la aplicación de carteros y mantuve la URL como http://10.0.0.33/nagarajuM2/rest/V1/hello/test/3

pero recibo un error

Por favor, ayúdame.


¿Está enviando una solicitud POST y en eso qué datos está enviando?
— Emipro Technologies Pvt. Ltd.

En realidad, quiero imprimir el valor de identificación usando el método de publicación, por lo tanto, he usado el mismo concepto que cualquier inchoo ha seguido. y en la url estoy usando como rest / V1 / hello / name / 4
— Nagaraju K

1
Para imprimir primero debe enviar datos POST como json: {"id": {}}
— Emipro Technologies Pvt. Ltd.

ok déjame intentar ..
— Nagaraju K

Gracias a las tecnologías @Emipro ahora obtuve el resultado. gracias por tu ayuda prntscr.com/g0d53x
— Nagaraju K

Respuestas:


6

Está enviando una solicitud POST, por lo que también debe enviar datos en la solicitud POST en formato json como:{ "id": {}}

Y tiene que configurar Content-Type:application/jsonen el encabezado http.


Además, tenemos que mencionar "Content-Type: application / json" en la sección de encabezado prntscr.com/g0d96z
— Nagaraju K

6

Actualice los comentarios de la función correctamente tanto para el archivo de interfaz como para la clase que lo implementa.

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

0

Estaba recibiendo los mismos problemas, luego noté que estaba usando POST en lugar de GET , cambiándolo, los problemas se resolvieron.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.