2016-11-01 4 views
1

Я использую 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); 

Что я делаю неправильно?

ответ

4

Пожалуйста, попробуйте следующее:

Для тела запроса:

{"titel": "My test value"} 

Для запроса URL:

https://api.podio.com/item/<item_id>/value/ 

Все вместе, как Curl:

curl 
    -H "Content-Type: application/json" 
    -H "Authorization: OAuth2 <access_token>" 
    -X PUT 
    -d '{"titel": "Some updates"}' 
    https://api.podio.com/item/<item_id>/value/ 
+0

Спасибо. Кажется, проблема заключалась в том, что я использовал «Content-Type:» application/x-www-form-urlencoded''. Это работало для целей аутентификации, но, видимо, не для запросов. Любые идеи почему? – rabbitco

+0

Может быть, потому, что этот запрос body is 'json', а не' x-www-form'? –

+0

Я не думаю, что я использовал 'querystring.stringify()' в теле запроса .... – rabbitco

Смежные вопросы