Как получить файл с сервера с помощью 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? Спасибо.