Hola!
Hoy vamos a aprender a crear una nueva función en la API de PS de forma muy sencilla donde los parámetros podemos incluirlos en la propia URL. Para ello necesitaremos el artículo anterior y lo que aprendimos allá, así como la clase drapps que allá creamos.
Nuestra función con management personalizado
Abriremos nuestro
WebserviceRequest
y cambiaremos la declaración de nuestro nuevo servicio web para que sea de la siguiente forma:
El cambio aquí está en el parámetro specific_management: este parámetro cambia la manera en que esta función de nuestra API funciona… pudiendo manejarla como nosotros queramos.
Clase personalizada
Ahora crearemos un nuevo fichero en /override/classes/webservices llamado WebserviceSpecificManagementDrapps que implementará la interfaz WebserviceSpecificManagementInterface.
A continuación os dejo un esqueleto de la clase con las funciones implementadas de la interfaz:
La función manage la explicaré a continuación. las otras funciones son casi siempre parecidas. Y el parámetro de clase $validateFunctions lo he introducido ya como un comienzo de implementación de nuestras funciones. Si tenéis alguna duda con el funcionamiento de estas funciones básicas preguntad libremente.
La función manage
La implementación de esta función ya corre por nuestra parte. Presentaré una implementación que haga lo que en el anterior artículo hacía para dar una idea de cómo podría usarse.
Aquí tenemos el objeto wsObject con el parámetro urlSegment con todos los parámetros de la prettyUrl.
Por ejemplo: drapps, funcion1, parametro1, parametro2 si la url es del tipo http://url_tienda/api/drapps/funcion1/parametro1/parametro2
Ahora solamente quedaría implementar nuestras funciones personalizadas: por ejemplo funcion1:
Alguna anotación
- Recordar activar este Resource desde el admin de Prestashop (Parámetros avanzados -> webservice).
- Asimismo, no estoy teniendo en cuenta en este ejemplo casi nada acerca de la validación de parámetros, eso os lo dejo a vuestra libertad.
¡Nada más!
Si queréis que siga escribiendo sobre Prestashop… no dudéis en contactarme; así como si tenéis alguna duda.
Un saludo y gracias por leerme!
Buenos días,
Tengo una tienda online con prestashop, hago dropshipping con bigbuy. Pero necesito crear un API que me actualize automaticamente el catalogo completo de bigbuy cada 4 horas, así como los costes de envío y los atributos de los productos.
Bigbuy me facilito las claves de API para poder realizar estas tareas, pero no tengo nada de conocimientos de programacion.
Te escribo para ver si me puedes dar alguna solucion, espero tu respuesta
Gracias!!
Hola José!
Gracias por tu comentario… en breve os pondremos en contacto contigo para gestionar tus dudas
Un saludo!
A mi me gustaria saber que ne vez de enviar un parametro solo obtengamos datos necesarios por ejemplo:si la url es asi http://url_tienda/api/drapps/1 que yo pueda utilizarla asi http://url_tienda/api/drapps y me mande por ejemplo solo nombres de productos al ejecutarse la consulta ya lo hago pero no quisiera enviar un id, como seria en este caso, me ha ayudado mucho, gracias
Hola Jasmin!
Escribiré un nuevo post explicando esto un poco ¿vale? Sois varios los que me habéis preguntado y responderé con un post.
Gracias!
Aquí lo tienes!
http://drapps.info/prestashop-web-service-aprende-crear-una-nueva-funcion-3.html
Hola David.
Estoy tratando de crear un servicio web que me retorne todo el menú de la web. eh simulado lo que necesito que me retorne de esta forma. http://superpet.juankuga.io/modules/ps_mainmenu/ws/
Pero leyendo tu articulo estoy intentando que sea de esta forma. http://superpet.juankuga.io/api/psmainmenu,
En el modulo de ps_mainmenu eh creado una funcion que me retorne todo el menú que nesito. lo que intento hacer es coger ese método y llamarlo desde el webservice y me retorne todo aquí http://superpet.juankuga.io/api/psmainmenu.
Gracias por tu post. enserio que ayudas a mucho. pero creo que seria genial también que todo tu ejemplo lo puedas subir en GitHub.
Muchas Gracias.
Hola Juan!
Puedes crear un wrapper que llame a dicha función que te retorne el menu y ya ese wrapper lo llamas desde tu función del servicio web (o desde el servicio web llamas a esta función que has realizado). No tengo muy claro cómo ayudarte a través de un comentario. Si quieres contáctame por skype y lo vemos
Un saludo y gracias por pasarte!