2016-07-06 56 views
0

我有點困惑爲什麼以下將無法正常工作。Python不會在ConnectWise中修補json。

我通過請求連接到我們的ConnectWise API。我得到了答覆,然後我通過解析找到我正在尋找的門票。然後我試圖修補票來更改某些信息。

通過API返回的示例json。

{ 
    "id": 12345, 
    "summary": "[CompanyName][ComputerName] Disk Space Check - drive G:", 
    "recordType": "ServiceTicket", 
    "board": { 
    "id": 1, 
    "name": "Board1", 
    }, 
    "status": { 
    "id": 5, 
    "name": "NewTicket", 
    }, 
    "owner": { 
    "id": 1, 
    "identifier": "", 

一旦我確定了需要使用的票證,我嘗試修補它。

def assign_ticket(self, ticket): 

    add_resource = [ 
        {'op': 'replace', 'path': '/board/name', 'value': 'Board2'}, 
        {'op': 'replace', 'path': '/status/name', 'value': 'NewTicket2'}, 
        {'op': 'replace', 'path': '/owner/identifier', 'value': 'MyBrainHurts'} 
      ] 

    r = requests.patch(self.url + self.url_ticket + str(ticket), json=add_resource, headers=self.header) 
    print(r.status_code) 

它返回一個200狀態碼來完全正確地指示一切,但只更新/ owner/identifier字段。其他兩個都不是。我已經Google'd好幾天了,並嘗試了多種代碼,但我不明白爲什麼它不會改變板子或狀態。有任何想法嗎?

+0

當通過非Python方式(例如,捲曲)執行修補時,PATCH工作嗎? – jwodder

+0

這是一個很好的問題。我討厭承認我還沒有想過嘗試。我現在就去試試看... – MBH

回答

1

我剛剛檢查了一些其他代碼,並且正在使用數組成功修補,但我使用的是資源的ID而不是名稱。嘗試一下;而不是/狀態/名稱使用/狀態/ ID和數值。

r.text的結果是什麼?這應該以新的補丁形式返回配置,或者它會告訴你爲什麼補丁不起作用。