Je suis nouveau dans l’API REST ** (est-ce vraiment mon problème REST?) **
Je veux obtenir tous les nœuds de neo4js en utilisant Cypher
START n = node(*) return n;
comment puis-je utiliser si j’utilise jquery ajax POST ou méthode GET
en doc il recommande
POST http://localhost:7474/db/data/cypher Accept: application/json Content-Type: application/json
Dans mon code j’écris
$.ajax({ type:"POST", url: "http://localhost:7474/db/data/cypher", accepts: "application/json", dataType:"json", contentType:"application/json", data:{ "query" : "start n = node(*) return n", "params" : {} }, success: function(data, textStatus, jqXHR){ alert(textStatus); }, error:function(jqXHR, textStatus, errorThrown){ alert(textStatus); } });//end of placelist ajax
Quel est mon problème? L’alerte d’erreur est ci-dessous
Vous ne dites pas quel genre d’erreur vous obtenez, mais en exécutant exactement le même code que vous, j’obtiens l’erreur suivante:
XMLHttpRequest cannot load http://127.0.0.1:7474/db/data/cypher. Origin http://127.0.0.1:3000 is not allowed by Access-Control-Allow-Origin.
Donc, je suppose que c’est l’erreur que vous rencontrez.
Lorsque vous effectuez un appel Ajax entre domaines, vous avez le choix entre deux options:
JSONP , que Neo4J ne supporte pas.
Partage de ressources d’origine croisée (CORS). “L’idée de base de CORS est d’utiliser des en-têtes HTTP personnalisés pour permettre au navigateur et au serveur de se connaître suffisamment pour déterminer si la demande ou la réponse doit réussir ou échouer” .
La demande OPTIONS envoyée avant le POST ( demande de contrôle en amont ) renvoie les en-têtes suivants du serveur Neo4J REST:
Access-Control-Allow-Origin:* Allow:OPTIONS,POST Server:Jetty(6.1.25)
Il manque ici un en-tête cruical, à savoir l’en Content-Type
tête Content-Type
. Cela signifie que la demande POST échouera lorsque cet en-tête est envoyé avec la demande POST, ce qui correspond exactement à ce qui se passe dans votre appel $ .ajax ().
Le POST réussira si vous supprimez la ligne suivante
contentType:"application/json",
depuis votre $.ajax()
.
Cela empêchera jQuery d’envoyer l’en-tête Content-Type.