Я создаю объект установки, используя вызов API REST, например:
curl -X POST \
-H "X-Parse-Application-Id: ${APPLICATION_ID}" \
-H "X-Parse-REST-API-Key: ${REST_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"deviceType": "ios",
"deviceToken": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
"channels": [
""
]
}' \
https://<your.parseprovider.here>/1/installations
Объект установки создается и указывается ответом:
{
"objectId": "EmqGmZXGEm",
"createdAt": "2017-02-15T10:13:18.647Z"
}
Теперь позвольте сказать, что я хочу обновить поле каналов, чтобы включить канал "foo" в объекте установки, я мог бы просто вызвать вызов типа:
curl -X PUT \
-H "X-Parse-Application-Id: ${APPLICATION_ID}" \
-H "X-Parse-REST-API-Key: ${REST_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"channels": [
"",
"foo"
]
}' \
https://<your.parseprovider.here>/1/installations/EmqGmZXGEm
Успех указывается ответом:
{
"updatedAt": "2017-02-15T10:18:31.055Z"
}
Однако, когда я выполняю вызов PUT как это (как в REST API docs, обратите внимание на включение полей deviceType и deviceToken)
curl -X PUT \
-H "X-Parse-Application-Id: ${APPLICATION_ID}" \
-H "X-Parse-REST-API-Key: ${REST_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"deviceType":"ios",
"deviceToken":"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
"channels": [
"",
"foo"
]
}' \
https://<your.parseprovider.here>/1/installations/EmqGmZXGEm
Теперь я получаю следующий ответ:
{
"code": 101,
"error": "Object not found."
}
Объект установки теперь был удален из базы данных Parse.
Это происходит, как только поле deviceToken включено в запрос PUT.
Предполагается ли это, или я что-то упускаю? Я использую API-интерфейс Parse для Delphi, который ломается из-за этого "явления". Я бы предпочел не взломать API, если ошибка вызвана ошибкой Parse, которая должна быть исправлена на стороне сервера.