Я создаю микросервис для API отдыха Camunda, используя python flask и flask_restplus, python 3.7.0. Camunda работает в док-контейнере, доступном через localhost, порт 8080. Все запросы GET к моему микросервису перенаправляются в API Camunda через перенаправление, которое работает отлично.
POST-запросы (проверенные почтальоном, как предлагается в официальном руководстве) не пересылаются должным образом с помощью
redirect(camunda_api_url)
или же
request.post(camunda_api_url)
Запрос POST через почтальона выполняется с помощью
Header: Content-Type: multipart/form-data
Body: upload File Object (somefile.bpmn)
Когда я выполняю POST непосредственно в REST-API Camunda, все работает просто отлично, но когда я пытаюсь перенаправить свой пост через микросервис, я получаю код состояния 200, но файл не загружается.
Отладка в моей конечной точке Я вижу, что файл получен:
print(request.files['upload'])
<FileStorage: 'somefile.bpmn' ('application/octet-stream')>
Таким образом, файл успешно передается, но перенаправление не работает.
Мой метод конечной точки выглядит следующим образом:
def post(self):
print(request.files['upload'])
test = requests.post(host_prefix + 'deployment/create', files=request.files)
print(test.status_code)
Изменение request.post с помощью
data=request.files
data=request.files['upload']
or omiting data completely
всегда приводит к тому, что файл не загружается.
Попытка перенаправления через
redirect(host_prefix + 'deployment/create', code=307)
также приводит к тому, что файл не загружается.
Как правильно перенаправить этот почтовый запрос в Camunda API?
Вопрос не в API Camunda, а в том, как правильно перенаправить запрос POST на внешнюю конечную точку.
P.S .: Я создал свои API и конечные точки так:
app = Flask(__name__)
api = Api(app, version='0.1', title='BPMN-API', description='A BPMN-API for Camunda, implemented in python')
...
api.add_resource(CreateDeployment, api_prefix + 'deployment/create', methods=['POST'])