Загрузка номера с использованием PUT пакета httr и JSON - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь использовать API веб-сайта для обновления данных записи, используя запрос PUT из пакета `httr 'и кодировку JSON, публикуя как строки, так и целочисленные значения. Это происходит с ошибкой 500, но успешно, если я исключаю число (double). Я предполагаю, что это потому, что httr ставит число в кавычках. Я очень мало знаю о http, JSON et c. извините, если я упустил что-то очевидное. Я не смог найти ничего в руководстве или в Интернете.

Извинения, вопрос не полностью воспроизводим, веб-сайт доступен не для всех.

Руководство API гласит:

PUT ​/id/{id}
Updates the record with the given id.
UpdateRecord{
   title    string
   date     string($date-time)
   effort   number($double)
}

Моя обновленная запись:

options(stringsAsFactors = FALSE)
postit <- data.frame("id" = "8be92e6c", "title" = "Record title", 
  "date" = "2019-07-14T00:00:00.000Z", "effort" = 10)

Я пытаюсь загрузить ее следующим образом:

library(httr)
url     <- "cloud.website.com"
path    <- "api/core"
api.key <- "xxx"
PUT(url=url, config = add_headers(Authorization = api.key), encode = "json", 
    path = paste0(path, "/id/", postit[1]), 
    body = as.list(postit[-1])

Сбой 500.

-> PUT /api/core/id/8be92e6c HTTP/1.1
-> Host: cloud.website.com
-> User-Agent: libcurl/7.64.1 r-curl/4.3 httr/1.4.1
-> Accept-Encoding: deflate, gzip
-> Accept: application/json, text/xml, application/xml, */*
-> Content-Type: application/json
-> Authorization: xxx
-> Content-Length: 
-> 
>> {"title":"Record title","date":"2019-07-14T00:00:00.000Z","effort":"10"}
<- HTTP/1.1 500 Internal Server Error
<- Server: nginx/1.10.3 (Ubuntu)

Если я исключу переменную «усилия», она завершится успешно, и запись будет обновлена.

Так как я могу заставить httr / PUT опубликовать мою переменную «усилия» без кавычек, как число? Или это вряд ли является проблемой - в таком случае, есть какая-то идея, которую я должен исследовать или как копать глубже?

...