Как получить Etag для коллекции Restheart

Я пытаюсь удалить коллекцию с помощью Restheart API.

$http DELETE 127.0.0.1:8080/testDB/testCollection

но я получаю ошибку:

"The collection's ETag must be provided using the 'If-Match' header."

Если я использую GET:

http GET 127.0.0.1:8080/testDB/testCollection

Я могу увидеть etag из последнего ответа GET-запроса и добавить его вручную в заголовок If-Match, чтобы удалить коллекцию.

Однако я не понимаю, как бы я получить _etag для данной коллекции (а именно, testCollection).

Моя последняя цель - удалить коллекцию из Java-приложения, используя Apache http commons в качестве клиента REST API. Поэтому примеры в Java приветствуются.

1 ответ

Решение

Чтобы получить etag просто GET 127.0.0.1:8080/testDB/testCollection?pagesize=0 и вы найдете его между его свойствами и в заголовке ответа Etag

http -a a:a 127.0.0.1:8080/db/coll?pagesize=0
HTTP/1.1 200 OK
...
ETag: 58653f6b2d174c09c590262a**

{
    "_embedded": [], 
    "_etag": {
        "$oid": "58653f6b2d174c09c590262a"
    }, 
    "_id": "coll", 
    "_returned": 0,
}

Также обратите внимание, что попытка удалить коллекцию возвращает заголовок ответа Etag в случае конфликта

http -a a:a DELETE 127.0.0.1:8080/db/coll
HTTP/1.1 409 Conflict
...
ETag: 58653f6b2d174c09c590262a

{
    "http status code": 409, 
    "http status description": "Conflict", 
    "message": "The collection's ETag must be provided using the 'If-Match' header."
}

наконец, вы можете установить поведение проверки Etag в файле конфигурации. По умолчанию проверяется etag только в DELETE / db и / coll, но его можно включить для любого запроса записи (например, чтобы избежать так называемой проблемы записи-призрака)

из файла conf:

#### ETag policy

# the following configuration defines the default etag check policy
# the policy applies for dbs, collections (also applies to file buckets) and documents
# valid values are REQUIRED, REQUIRED_FOR_DELETE, OPTIONAL

etag-check-policy:
    db: REQUIRED_FOR_DELETE
    coll: REQUIRED_FOR_DELETE
    doc: OPTIONAL
Другие вопросы по тегам