2016-11-01 81 views
1

我使用跑道,我希望能夠使用PODIO RESTful API更新項目。如何使用REST API使用新值更新字段?

我更具體地想將PUT純文本轉換爲項目字段。我已根據instructions成功更新了相關字段。但是更新導致以「無值」更新字段。我無法找到如何讓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 
    -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是'json'而不是'x-www-form'? –

+0

我不這麼認爲,因爲我在請求主體上使用了'querystring.stringify()'.... – rabbitco

相關問題