es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Magento 2 Rest API – El método PUT siempre retorna “La clase … no existe”

He creado un punto de conexión de API de Magento 2 para la solicitud PUT y siempre devuelve “La clase .. no existe“.

Hay 2 parámetros en la solicitud PUT:
– Parámetro de ruta: id
– Cadena JSON en el cuerpo de la solicitud PUT: data

Interface de ejemplo:

/**
 * @param int $id
 * @param mixed $data
 * @return string
 */
public function create($id, $data);

Modelo:

public function create($id, $data) {...}

webapi.xml:

<route url=".../:id/create" method="PUT">
  <service class=".../ExampleInterface" method="create"></service>
  <resources>
    <resource ref="anonymous"></resource>
  </resources>
</route>

La interfaz y el modelo están conectados y todo está bien. Tengo el mismo punto final como el que recibe los mismos parámetros, pero se utiliza el método POST y funciona bien. Cuando lo cambio a PUT, siempre el segundo parámetro causa problemas aunque todo en la interfaz y el método sea correcto y el mismo.

Importante: Si elimino uno de estos dos parámetros (parámetro de ruta o el que está en el cuerpo de la solicitud PUT), funciona bien. Pero cuando hay una combinación de parámetro de ruta y cadena JSON en el cuerpo, siempre el segundo causa errores.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema parece estar en la configuración del archivo webapi.xml para la solicitud PUT. No se encuentra la clase especificada en la etiqueta de servicio, de ahí el mensaje de error “La clase .. no existe”.

    Para solucionar esto, asegúrese de que se especifique la ruta correcta a la clase ExampleInterface en el atributo de clase de la etiqueta de servicio. Además, verifique si los nombres de espacio y módulo son correctos en la ruta.

    Otra posible causa del error podría ser el formato de datos que se envía en el cuerpo de la solicitud PUT. Asegúrese de que el formato de datos sea correcto y coincida con el formato esperado por el método de creación en la clase ExampleInterface.

    También puede intentar usar nombres de variables diferentes para los dos parámetros, para evitar conflictos de nombres.

    Por último, asegúrese de que la solicitud PUT se esté enviando al punto final correcto con el valor del parámetro de ruta correcto.

    Una vez que se hayan realizado estos pasos, la solicitud PUT debería funcionar correctamente con los dos parámetros en el cuerpo de la solicitud y en la ruta.

Comments are closed.