prestashop créer et mettre à jour des ressources via l'url de l'api webservice
J'ai (malheureusement) écrire une application client en tant que front-end pour un prestashop powered site web. J'avais besoin d'effectuer toutes les opérations CRUD sur les ressources via l'url du webservice et je suis bloqué sur créer et mettre à jour. J'ai été très surprise de trouver comment quelques exemples sont disponibles sur le web depuis prestashop est censé être largement utilisé de cms. Cependant, jusqu'à maintenant, j'en suis venu à:
GET http://www.myshop.com/api/myresource/id
pour obtenir xml pour les ressources avec l'id donné ou
GET http://www.myshop.com/api/myresource/?display=full&filter[field]=[value]
pour filtrer les résultats. Je suis en train d'écrire cela juste parce que j'ai eu du mal avec les google pour obtenir cette information, ce filtre choses pourraient aider quelqu'un dans le futur.
DELETE http://www.myshop.com/api/myresource/id
pour supprimer une ressource (je suppose que les filtres fonctionnent ici aussi, mais ne l'ai pas essayé jusqu'à présent)
maintenant, est-ce que quelqu'un sait comment créer et mettre à jour les ressources? J'ai essayé
POST/PUT http://www.myshop.com/api/myresource/
donnant les couples de champ de valeur dans les paramètres de la requête http avec pas de chance, j'obtiens erreur interne du serveur. Non, je n'ai pas d'accès direct au serveur donc je ne sais pas quelle erreur est levée et, je l'espère, il peut être résolu sans déranger site web développeurs, je voudrais enregistrer mes munitions.
La seule ressource utile que j'ai trouvé sur le web est cette une, j'ai aussi étudié entre autres question et ont suggéré que les liens dans ces question a été d'aucune aide.
OriginalL'auteur lelloman | 2013-05-14
Vous devez vous connecter pour publier un commentaire.
Si vous modifiez votre config/config.inc.php et d'ajouter le suivant, vous serez en mesure de voir les erreurs dans la Réponse (erreur) (1by1 qui est très frustrant quand vous êtes à essayer de comprendre pourquoi créer échoue). N'oubliez pas de commentaire de la ligne lorsque vous avez terminé.
Vous devez également vous assurer que vous ajouter les données dans votre POST/PUT opération avec xml=
<prestashop>......</prestashop>
(je suis à l'aide de C# pour mon Client si cela peut ne pas être nécessaire avec PHP)si vous utilisez le
?schema=synopsis
pour obtenir votre vierge, assurez-vous de parcourir les éléments dans le document XML qui sont là comme des espaces réservés et les supprimer.. Vos (produits) par exemple sera brisé, mais le genre de travail si vous n'avez pas.J'ai aussi ajouté mon code que dans le passage initial du XML complètement les promenades de l'arbre, à la recherche de quoi que ce soit avec l'attribut
not_filterable
et supprime les nœuds (encore une fois pas beaucoup de documentation disponible pour savoir si c'est la bonne chose à faire).EDIT: 1 autre chose que de la note et de la Langue en fonction des éléments, assurez-vous d'utiliser CDATA pour les éléments.
J'ai tout juste réussi avec la Génération de mes Produits via l'exécution de cette sorte j'espère que c'est de l'aide. Je suis encore à effectuer une mise à Jour de l'existant.
Mise à JOUR: depuis, j'ai mis à jour vers 1.5.4.1 de Prestashop, et a commencé la mise à jour de la ressource de Produits dans mon cas
Mise À Jour Des Ressources
URI:
http://site/api/products/1
Utiliser La Méthode =
"PUT"
type de contenu =
"text/xml"
Assurez-vous que vous supprimez tous les éléments qui ont "not_filterable' attribut. (Je ne comprends pas pourquoi, mais ça ne fonctionne pas si vous n'avez pas)
Supprimer La Ressource
URI:
http://site/api/products/1
Utiliser La Méthode =
"DELETE"
type de contenu =
"application/x-www-form-urlencoded"
J'ai trouvé que vous n'avez pas besoin de tout le corps de sorte que vous pouvez définir ContentLength à 0, il me semble. et probaly n'avez pas vraiment besoin de type de contenu à définir, mais il fonctionne.
oh, autre chose, pourquoi devrais-je utiliser CDATA? J'ai fait essayé sans et ça a marché, je vais avoir un problème tôt ou tard?
L'URL qui avez-vous besoin? La cdata je viens de remarqué avant que je quitte le bureau aujourd'hui, il érodé quand j'avais un & dans le nom du produit que lorsque je l'ai mis dans un régulier xmlelement il encodés et les causes de la nous service à l'erreur 500.
Codé le & & ( XML devrait). Désolé pour le 2ème commentaire ne pouvais pas le modifier sur mon téléphone.
Je crois me rappeler ma demande lors de la publication METTEZ vous n'incluez pas le XML = trucs... et définir le type de contenu text/xml (de la bonne dérivation)
OriginalL'auteur Paul Farry
J'ai trouvé la réponse dans le code source, prestashop/webservice/dispatcher.php il n'était pas nécessaire de définir des champs/valeurs des paramètres http, mais plutôt de passer un ensemble de xml, contenant au moins tous les champs requis, si l'utilisation d'un post pour créer un nouvel enregistrement, ou simplement les champs que vous voulez être mis à jour lors de toute demande d'une option de vente, afin de
OriginalL'auteur lelloman
Si vous regardez la documentation, vous pouvez demander un vide
xml
fichier avec tous les champs de la chaque ressource. Que vous avez à faire :Alors si vous avez besoin de plus d'informations sur les champs (comme certains sont obligatoires), il suffit de faire :
Comme il est dit dans la documentation, vous avez à construire un fichier xml et de les envoyer de cette façon :
$opt = array('resource' => 'customers'); $opt['postXml'] = $xml->asXML(); $xml = $webService->add($opt);
comme il est dit dans la question, j'ai besoin d'accéder à des ressources via l'url et je n'ai pas accès au serveur, donc, ce que je suis supposé faire avec du code php?
si je n'avais pas expliquer clairement ce qu'est mon problème, s'il vous plaît dites-moi ce que la partie n'est pas clair, si vous êtes juste de répondre au hasard, please give up
Vous devez utiliser le
POST
méthodehttp://mystore.com/api/[resource name]
et le besoin en ressources. Dans le langage qui êtes-vous coder votre application client ?OriginalL'auteur Strategio