Я пытаюсь использовать 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 опубликовать мою переменную «усилия» без кавычек, как число? Или это вряд ли является проблемой - в таком случае, есть какая-то идея, которую я должен исследовать или как копать глубже?