2017-02-21 12 views
0

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

$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/дб и/Coll, но может быть включена в любой запрос записи (например, чтобы избежать так называемого призрака пишет выпуск)

из файла конф:

#### 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