#python #post #python-requests #hasura
#python #Публикация #python-запросы #hasura
Вопрос:
Я пытаюсь использовать API Hasura для получения содержимого моей базы данных. Подходящей конечной точкой является v1alpha1/pg_dump
.
Я попытался выполнить следующее на Python:
import requests
api_url = 'http://localhost:9695/v1alpha1/pg_dump'
header = {'Content-Type': 'application/json',
'x-hasura-admin-secret': 'MY_SECRET',
'X-Hasura-Role': 'admin'}
r = requests.post(url=api_url, headers=header)
Если я это сделаю requests.get
, я получу информацию обратно (html-код, хотя ничего особенно полезного). Однако, если я это сделаю requests.post
(что требуется Hasura: https://hasura.io/docs/1.0/graphql/core/api-reference/pgdump.html ), я получаю ошибку 404. Я не понимаю, почему. Это не ошибка аутентификации, а ошибка «Страница не найдена».
Я неправильно построил свой URL-адрес? Есть ли что-то, что я упускаю? Порт правильный (и если я изменю его в коде, он выдает другую ошибку, сообщающую, что порт недействителен / закрыт). Я не уверен, что еще нужно изменить.
Комментарии:
1. Вы не публикуете никаких данных, не так ли?
2. Я попытался добавить
data
и / илиbody
поле, но это ничего не изменило. Когда я имел дело с REST API в прошлом, когда что-то вроде данных отсутствует, это выдает другую ошибку. Я никогда не получал ошибку «страница не найдена» для POST из-за отсутствия тела.
Ответ №1:
Итак, я попробовал в своей собственной среде развертывания Digital Ocean 1 click. Я не защитил его, поэтому я не предоставляю никаких заголовков. Он отлично работает следующим образом:
import requests
import json
r = requests.post('http://address_of_hasura/v1alpha1/pg_dump',
data = json.dumps({
'opts' : ['-O', '-x', '--schema-only', '--schema', 'public'],
'clean_output': True
}) )
print r.text
Если вы использовали переменную HASURA_GRAPHQL_ENABLED_APIS
env и не включили pgdump
ее, это может быть причиной, по которой она будет отключена.
Комментарии:
1. Хм, я попробовал ваш код, заменив ваш URL на мой и добавив свои заголовки, но он все равно печатает
404 page not found