Я использую Podio, и я хочу иметь возможность обновлять элементы, используя API PODIO RESTful.Как обновить поле с новым значением с помощью REST API?
Я более конкретно хочу PUT
простой текст в поле товара. Я успешно обновил поле в соответствии с instructions. Однако обновление приводит к обновлению поля «no value». Я не могу узнать, как получить API для обновления поля со значением, которое я предоставляю. Это мой код:
var path = '/item/';
var item_id = 346397274;
var value = 'value';
var field_id = 108976076;
var update = "foo"
var update_length = update.length;
var options = {
'host': 'api.podio.com',
'port': 443,
'path': path + item_id + '/value/' + field_id,
'accept': 'application/json',
'method': 'PUT',
'headers': {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': update_length,
'Authorization': 'Bearer ' + access_token
}
}
var req = https.request(options, function(res) {
})
req.write(update);
req.end();
Я думаю, что мое тело запроса как-то должно быть другим. Но я пробовал всевозможные комбинации, и я просто не могу заставить его работать. Когда я запускаю GET
запрос на возвращаемые данные для рассматриваемой области является следующим:
{ status: 'active',
type: 'text',
field_id: 108976076,
label: 'Titel',
values: [ { value: 'Old Value' } ],
config:
{ default_value: null,
description: null,
settings: { format: 'plain', size: 'small' },
required: false,
mapping: null,
label: 'Titel',
visible: true,
delta: 0,
hidden: false,
unique: false },
external_id: 'titel' }
Я также попытался положить следующее в теле запроса: var update = querystring.stringify({"value": "foo"});
и:
var update = {"values": [querystring.stringify({
"value": "foo"
})]
};
var update = querystring.stringify(update);
Что я делаю неправильно?
Спасибо. Кажется, проблема заключалась в том, что я использовал «Content-Type:» application/x-www-form-urlencoded''. Это работало для целей аутентификации, но, видимо, не для запросов. Любые идеи почему? – rabbitco
Может быть, потому, что этот запрос body is 'json', а не' x-www-form'? –
Я не думаю, что я использовал 'querystring.stringify()' в теле запроса .... – rabbitco