Какой правильный URL root для Restful API для Neo4j Desktop? - PullRequest
1 голос
/ 24 января 2020
URL='http://localhost:7474/db/data'

headers = {'Accept': 'application/json;charset=UTF-8','Content-Type':'application/json'}
data = {
  "statements" : [
      {
        "statement" : "MATCH (n:product) RETURN n"
      } ]
}

r = requests.post(URL, headers = headers,json=data)
data = r.json()['results'][0]['data']
print(data)

Я установил Neo4j Desktop на свой локальный компьютер и создал базу данных с именем 'testDB'. Я могу посмотреть на это в браузере, но не могу получить результаты из API, как указано выше. Сообщение об ошибке:

data = r.json()['results'][0]['data']
KeyError: 'results'

Когда я запускаю это одно:

URL='http://localhost:7474'
headers = {'Accept': 'application/json'}
r = requests.get(URL, headers = headers)
if r.status_code == requests.codes.ok:
    print(r.json())

Отображение ниже, что отличается от документации:

{'data': 'http://localhost:7474/db/data/', 
 'management': 'http://localhost:7474/db/manage/', 
 'bolt': 'bolt://localhost:7687'
}

Согласно документации, вывод должен быть:

{
  "bolt_direct": "bolt://localhost:7687",
  "bolt_routing": "neo4j://localhost:7687",
  "cluster": "http://localhost:7687/db/{databaseName}/cluster",
  "transaction": "http://localhost:7687/db/{databaseName}/tx",
  "neo4j_version": "4.0.0",
  "neo4j_edition": "enterprise"
}

Какой правильный URL-адрес для получения результатов? Я подозреваю, что в URL, который я даю, я не указал 'testDB'. Возможно, мне нужно сделать некоторые настройки. В чем причина?

1 Ответ

0 голосов
/ 25 января 2020

Три варианта, в зависимости от того, используете ли вы Neo4j 4.0+ - во всех случаях вам нужно отправить заголовок авторизации с действительной базовой c строкой аутентификации .

/db/data/transaction/commit конечная точка

Это более новый HTTP API , где вы можете запустить несколько операторов - не беспокойтесь, что в URL-адресе написано «транзакция» и «принятие», вы можно также просто использовать его для запросов:

{
  "statements" : [
      {
        "statement" : "MATCH (n) RETURN n LIMIT 25"
      } 
  ]
}

Если вы используете Neo4j 4.0.0, это будет предназначаться для любой конфигурации, настроенной в качестве базы данных по умолчанию.

/db/{databasename}/tx/commit конечная точка

например /db/testdb/tx/commit

В версии 4.0 появилась поддержка нескольких баз данных на одном работающем сервере. Формат запроса такой же, но transaction стал tx в URL-адресе, а data стал именем вашей базы данных.

{
  "statements" : [
      {
        "statement" : "MATCH (n) RETURN n LIMIT 25"
      } 
  ]
}

Примечание: поддержка нескольких баз данных не так же, как простое создание нескольких графиков в Desktop. Desktop по-прежнему работает только на одном сервере баз данных, но если вы сделаете этот сервер экземпляром Neo4j 4.0.0+, вы сможете разместить на нем несколько баз данных и переключаться между ними во время запроса.

/db/data/cypher конечная точка

Это устарело , но все еще работает для версий <4.0.0: </p>

{
  "query" : "MATCH (x) RETURN x LIMIT 25"
}

Более подробную информацию о формате запроса в каждом случае можно найти в связанных документах. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...