Я пытаюсь сделать запрос PATCH к API с помощью python. Я действительно новичок в питоне. Я провел некоторое исследование и узнал о модуле запросов. я делаю запрос
customerImported = requests.patch(f'https://somewebsite.io/api/v1/RefNum/20IOR011673', data = {'Imported': 'yes'})
print(customerImported.json())
вот так
Я получаю ответ об ошибке от API. что говорит
{'error': 'Отсутствует параметр данных в запросе.'}
Здесь мы можем сделать то же самое с PHP (и это работает!)
<?php
$data = http_build_query(
[
'data' =>
[
['name' => 'Scott', 'age' => 25]
]
]
);
$options = array(
'http' => array(
'method' => 'PATCH',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $data
)
);
$result = json_decode(
file_get_contents('https://somewebsite.io/api/v1/id/61', false, stream_context_create($options))
);
Как я могу сделать этот питон?
Параметр data
в requests.patch
работает так же, как параметр content
в PHP.
с stream_context_create
. API отвечает ошибкой, так как ожидает, что отправляемый вами объект JSON будет содержать ключ с именем data
. Я бы предположил, что это то, что он ожидает:
customerImported = requests.patch(
f'https://somewebsite.io/api/v1/RefNum/20IOR011673',
data = {'data': { 'Imported': 'yes'}})
Это проблема на стороне API; ничего общего с питоном. Если проблема не устранена, попробуйте найти документацию по API, чтобы быть уверенным, что данные будут отправляться в ожидаемом формате.
@ vajad57 API представляет собой интерфейс REST, реализованный через JSON (по крайней мере, это действительно так). Документация для других языков по-прежнему вам пригодится; вам просто нужно увидеть формат отправляемых данных и формат возвращаемых данных. Неважно, на каком языке готовятся запросы, если вы понимаете JSON, передаваемый туда и обратно.
Использование json.dumps
исправило это :)
@vajad57 Отлично, рад это слышать!
Спасибо за Ваш ответ. это решило текущую проблему. теперь я получаю
{'error': 'Data should be an array of objects in valid json format.'}
Итак, я сделал:data = {'data': [{"Imported": "yes"}]}
но все та же ошибка