Получение unauthorized(401) при передаче токена для вызова API в react redux saga
Я пытаюсь получить данные пациента во фронтенде
Это моя функция бэкенда в Django (DRF)
@api_view(['GET'])
@permission_classes([IsAuthenticated])
def getPatientProfile(request):
user = request.user
try:
patient = Patient.objects.get(user_id=user)
print(type(patient))
response = PatientSerializer(patient, many=False)
return Response(response.data)
except Exception as e:
print(e)
return Response(e)
Это мой тестовый вызов, который отлично работает в бэкенде
GET http://127.0.0.1:8000/profiles/getPatientProfile/ HTTP/1.1
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjYwNTgzMjU2LCJpYXQiOjE2NjA1NzYwNTYsImp0aSI6ImY3ZGU2OGEwNTI2ZTRmNzBiZjU2MDExYzgzMjFhODI1IiwiZW1haWwiOiJhbGlzaGJhaHJpYXouc0BnbWFpbC5jb20ifQ.BLjghVEhSjizpuP9BAJHdjGreKMvl5Y1xOmhsQ2lQLM
Вот как я пытаюсь вызвать API в saga.js, но я продолжаю получать ошибку Unauthorized, я думаю, что проблема в том, как я пишу строку Authorization: Bearer token, может ли кто-нибудь помочь, как я могу исправить это и в чем проблема
export const getDetailAPIfunction = async token => {
try {
const response = await axios.get(
"http://127.0.0.1:8000/profiles/getPatientProfile/",{
Authorization: 'Bearer ',token,
}
);
console.log("data recieved = " + response.data);
return response.data;
} catch (error) {
console.log("error = " + error);
throw error;
}
};
function* fetchUserDetail({ payload: token }) {
try {
const response = yield call(getDetailAPIfunction, token);
yield put(getProfileDetailSuccess(response));
} catch (error) {
yield put(getProfileDetailFail(error));
}
}
и вот что возвращает в полезной нагрузке действие VIEW_PROFILE_FAIL
Authorization: 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjYwNTgzMjU2LCJpYXQiOjE2NjA1NzYwNTYsImp0aSI6ImY3ZGU2OGEwNTI2ZTRmNzBiZjU2MDExYzgzMjFhODI1IiwiZW1haWwiOiJhbGlzaGJhaHJpYXouc0BnbWFpbC5jb20ifQ.BLjghVEhSjizpuP9BAJHdjGreKMvl5Y1xOmhsQ2lQLM'
У вас есть два пробела между Bearer и жетоном. Это может быть причиной.
EDIT
Добавьте кавычки к вашим параметрам:
"Authorization": 'Bearer ' + token,
и если это не сработает, добавьте следующее:
"Accept": 'application/json'