繁体   English   中英

如何使用 Redux RTK 查询与 aws API 或将 RTX 与 Aws cognito json 令牌集成?

[英]How can I use Redux RTK Query with aws API or integrate RTX with Aws cognito json Tokens?

我正在尝试将 RTK Query 与 aws API 请求集成。 我不需要使用 api 请求,但我需要使用 Cognito 提供的身份验证。

我试图以这种方式集成,但显然没有添加令牌:


import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';

// Define a service using a base URL and expected endpoints
export const researchApi = createApi({
    reducerPath: 'researchApi',
    
    baseQuery: fetchBaseQuery({ baseUrl: process.env.NEXT_PUBLIC_API_RESEARCH }),

    prepareHeaders: async (headers) => {
        headers.set('Authorization', (await Auth.currentSession()).getIdToken().getJwtToken());
        return headers;
    },

    endpoints: (builder) => ({
      getResearch: builder.query({
        query: () => `research`,
      }),
    }),
  })
  
// Export hooks for usage in functional components, which are
// auto-generated based on the defined endpoints
export const { useGetResearchQuery } = researchApi

知道如何使两者协同工作吗? 使用 aws API 发送请求,或者将 json 令牌传递给请求的方法也可以。

干杯!

所以我做错了prepareHeaders,这里有一些工作代码:

import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
import { Auth, API, Storage } from 'aws-amplify';

// Define a service using a base URL and expected endpoints
export const researchApi = createApi({
    reducerPath: 'researchApi',
    
    baseQuery: fetchBaseQuery({ 
        baseUrl: process.env.NEXT_PUBLIC_API_RESEARCH,
        prepareHeaders: async (headers, { getState }) => {
            const token = (await Auth.currentSession()).getIdToken().getJwtToken();
            headers.set('Authorization', `${token}`);            
            return headers;
        }
    }),
    endpoints: (builder) => ({
      getResearch: builder.query({
        query: () => `research`,
      }),
    }),
  })
  
// Export hooks for usage in functional components, which are
// auto-generated based on the defined endpoints
export const { useGetResearchQuery } = researchApi


暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM