Не удается заставить HTTP PATCH работать на экземпляре Google Cloud Run - PullRequest
0 голосов
/ 21 октября 2019

У меня запущен веб-сервер под названием Postgrest, который генерирует REST API поверх базы данных postgres. У меня это работает в Google Cloud Run, и это работает по большей части. Действия HTTP, которые мне нужно выполнить, это POST, GET, DELETE и PATCH.

Все работает правильно, кроме PATCH, который я использую для обновления существующего значения в БД. Когда я запускаю команду из командной строки curl, ошибка не выдается, но она не работает.

https://postgrest -q5mmtshbma-uc.a.run.app / notes? Noteid = eq.3 -X PATCH -H "Авторизация: Носитель $ TOKEN" -H "Тип контекста: application / json" -d '{"note": "обновил его!"}'

Когда я запускаю эту версию для одной и той же версии postgrest, работающей локально, все работает правильно, поэтому у меня возникает мысль, что может быть проблема с запуском Google Cloud и невозможностью разрешить / принять запросы PATCH? Опять же, POST, DELETE, GET все работает нормально.

У кого-нибудь есть понимание того, что здесь может происходить?

1 Ответ

2 голосов
/ 23 октября 2019

В конечном итоге я обнаружил, что проблема связана с использованием RLS (защита на уровне строк) в БД PostGres, и у меня была настроена специальная политика для вставки, обновления, удаления и выбора.

Обновление "«Я полагаю, что политика была неправильно настроена, поэтому обновление не удалось, но и postgre DB, и postgrest WebServer не дали ошибок на этот счет.

В конечном счете, когда я заново создал политику обновления для этой таблицы,команда PATCH (обновление) выполнена успешно.

...