Передача файла запроса из API в API: NestJS (HttpService: Axios) в Python (фляжка) - PullRequest
0 голосов
/ 03 ноября 2019

Я пытаюсь перенести файл из API nestJS в API Python Flask.

Этот процесс будет запускаться запросом POST (FormData: файл) в API-интерфейсе гнезда. Затем гнездо API должно отправить файл в Python API.

HttpService от nestJS использует Axios. Поэтому моя цель - отправить файл с axios из NodeJS.

FormData недоступна на узле JS, поэтому я установил Nmp FormData .

Python

Python-код, который, как мне кажется, работает правильно, потому что запрос Postmanпройти без проблем.

@app.route('/route', methods=['POST'])
def user():

    params_data = json.load(request.files.get('file'))

    return 'OK'

NestJS

На стороне гнезда я много чего перепробовал.

Но основная идея заключается в следующем: используйте formData.getHeaders в качестве заголовков axios и поместите данные в конфигурацию axios.

app.controller.ts

    @Post()
    uploadFile(@Req() request: Request) {
        // request is Express request
        const formData: any = new FormData();
        let newFile;
        if (request.hasOwnProperty('file')) {
            newFile = (request as any).file; // This is working 
        }
        formData.append('file', newFile.buffer, 'filename');

        return this.appService.launchOptim(formData);
    }

app.service.ts

  public launchOptim(modelData: FormData) {

    const axiosConfig: AxiosRequestConfig = {
      headers: modelData.getHeaders(),
      data: modelData,
    };


    return this.http.post('http://localhost:5000/route', modelData, axiosConfig)
               .pipe(map(result => result.data));

  }

И затем, при такой конфигурации, request.files в коде Python всегда остается пустым.

Как правильно перенести файл запроса в другой API с помощью axios?

Проблема по этой теме: Проблема с Axios Также пробовали это Исправление Axios

...