Прямые API-запросы к базе данных Tarantool

Вы можете использовать HTTP API для извлечения напрямую данных из базы данных Tarantool.

В этом разделе:

Общие сведения

API-запросы к базе данных Tarantool нужно отправлять по адресу http://<tarantool_host_ip:port>.

Совет

Порт для API-запросов можно узнать в разделе FindFace.start файла конфигурации Tarantool:

cat /etc/tarantool/instances.enabled/FindFace.lua

##8001:
FindFace.start("127.0.0.1", 8001)

Примечание

В случае если FindFace Security развернут на одиночном физическом сервере, база данных Tarantool по умолчанию будет доступна только локально (127.0.0.1). Если необходимо открыть доступ к базе данных Tarantool с удаленного сервера, внесите изменения в файл конфигурации findface-tarantool-server.

API-запросы к Tarantool могут содержать следующие параметры в сегментах пути:

  • :ver: версия API (v2 на данный момент).

  • :name: имя галереи.

    Совет

    Для получения списка имен галерей на шарде введите следующую команду в адресном поле браузера:

    http://<tarantool_host_ip:shard_port>/stat/list/1/99
    

    Та же самая команда в консоли:

    curl <tarantool_host_ip:shard_port>/stat/list/1/99 \| jq
    

    Вы также можете получить список имен галерей, отправив в Tarantool прямой запрос:

    echo 'box.space.galleries:select()' | tarantoolctl connect <tarantool_host_ip:shard_port>
    

    Имейте в виду, что при значительном количестве шардов в системе произвольно выбранный шард может не включать в себя все существующие галереи. В этом случае отобразите список галерей на нескольких шардах.

Добавление лица

POST /:ver/faces/add/:name

Параметры в теле:

Массив лиц в представлении JSON со следующими полями:

  • "id": id лица в галерее, uint64_t,
  • ”facen”: необработанный вектор признаков, base64,
  • "meta": метаданные лица, словарь.

Возвращает:

  • HTTP 200 и пустое тело в случае успеха.
  • HTTP 404 с описанием ошибки, если галерея с заданным именем не существует.
  • HTTP с отличным от 200 статусом и описание ошибки в теле в случае неудачи.

Пример

Запрос

curl -D - -s 'http://localhost:8001/v2/faces/add/testgal' --data '
[
  {
    "id": 9223372036854776000,
    "facen": "qgI3vZRv/z…NpO9MdHavW1WuT0=",
    "meta": {
"cam_id": "223900",
"person_name": "Mary Ostin",

    }
  }
]

Ответ

HTTP/1.1 200 Ok
Content-length: 1234
Server: Tarantool http (tarantool v1.7.3-673-g23cc4dc)
Connection: keep-alive

Удаление лица

POST /v2/faces/delete/:name

Параметры в теле:

Массив в представлении JSON из списка id лиц, подлежащих удалению.

Возвращает:

  • HTTP 200 и пустое тело в случае успеха.
  • HTTP 404, если лицо с заданным id не найдено в галерее.
  • HTTP с отличным от 200 статусом и описание ошибки в теле в случае неудачи.

Пример

Запрос

curl -D -  -s 'http://localhost:8001/v2/faces/delete/testgal' --data '[1, 4, 922, 3]'

Ответ

HTTP/1.1 200 Ok
Content-length: 111
Server: Tarantool http (tarantool v1.7.3-673-g23cc4dc)
Connection: keep-alive

Редактирование метаданных и/или вектора признаков

POST /v2/faces/update/:name

Параметры в теле:

Массив лиц в представлении JSON со следующими полями:

  • "id": id лица, uint64_t,
  • ”facen”: (опционально) новый вектор признаков, base64. Если параметр отсутствует или null, поле в базе данных не обновляется.
  • ”meta”: словарь, в котором передаются новые метаданные. Если поле meta отсутствует или null, оно не обновляется в базе данных.

Возвращает:

  • HTTP 200 и словарь со всеми параметрами лица, в том числе неизменными, в случае успеха.
  • HTTP 404 с описанием ошибки, если лица с таким id не существует.
  • HTTP с отличным от 200 статусом и описание ошибки в теле в случае неудачи.

Пример

Запрос

curl -D - -s 'http://localhost:8001/v2/faces/update/sandbox' --data '[{"id":1,"facen":null,"meta":{"m:timestamp":1848}}]'

Ответ

HTTP/1.1 200 Ok
Content-length: 151
Server: Tarantool http (tarantool v1.7.3-673-g23cc4dc)
Connection: keep-alive

{"meta":{"m:timestamp":1848,"normalized_id":"1_b9pkrf00mjt6h1vmq1kg.png","m:cam_id":"a9f7a973-f07e-469d-a3bd-41ddd510b26f","feat":"{\"score\":0.123}"}, "id":1, ... }

Получение списка галерей

POST /v2/galleries/list

Возвращает:

Массив с галереями, для каждой из которой возвращается имя (name) и число лиц (faces).

Пример

Запрос

curl -D - -s -X POST http://localhost:8001/v2/galleries/list

Ответ

HTTP/1.1 200 Ok
Content-length: 42
Server: Tarantool http (tarantool v1.7.3-673-g23cc4dc)
Connection: keep-alive

{
  "results": [
    {
      "name": "testgal",
      "faces": 2
    }
  ]
}