Как получить файл с сервера с помощью RTK Query

Приложение в связке NestJS + Redux RTQ Query. На сервере мы формируем get-запрос:

@UseGuards(JwtAuthGuard, RolesGuard)
@Get('/download/:id')
@Header('Content-Type', 'application/zip')
@Header('Content-Disposition', 'attachment; filename="docs.zip"')
getDocFile(
    @Param() { id }: { id: number },
    @User() user,
    @Res({ passthrough: true }) res: Response
) {
    return this.statementsService.getDocFile(Number(id), user.id, user.login, user.role)
}

В Postman все работает - возвращается файл и предлагается его сохранить.

На клиенте пишу такую конструкцию:

export const docsApi = createApi({
reducerPath: 'docsApi',
baseQuery: fetchBaseQuery({
    baseUrl: 'http://localhost:5000/api/docs/',
    prepareHeaders: (headers, { getState }) => {
        const token = (getState() as RootState).auth.token
        if (token) {
            headers.set('Authorization', `Bearer ${token}`)
        }
        return headers
    },
}),
endpoints: (build) => ({
    docsDownload: build.query({
        query: (id) => `download/${id}`
    })
})

const onDownLoadClick = (e: any) => {
const currentRow = params.row
setState({...state, isLoading: true, isError: false, errorMsg: ''})
downloadDoc(currentRow.id)
       .unwrap()
       .then((payload) => {
            setState({...state, isLoading: false, isError: false, errorMsg: ''})
        })
       .catch((error: TErrorRTKQuery) => {
            setState({...state, isLoading: false, isError: true, errorMsg: error.data.message})
        })
}

В результате получаю ошибку:

{ "status": "PARSING_ERROR", "originalStatus": 200, "data": rtywertt....is not valid JSON" }

Как правильно работать с получением файл в RTK Query? Спасибо.


Ответы (0 шт):