Amplify – API – Запрос на удаление – Конечная точка не распознана

Надеюсь, у тебя все хорошо. Я столкнулся с ошибкой в ​​библиотеке aws amplify под названием aws-amplify/api.

Я настроил сообщение и вызов, которые работают успешно. Кроме того, когда я запускаю вызов get с определенным параметром — идентификатором клиента, он возвращает только один результат, и этот результат — это информация о клиенте с соответствующим идентификатором клиента.

Когда я пытаюсь использовать ту же конечную точку, что и функция «получить один», которую я настроил для удаления, это не работает. Я получаю ошибку 404, что меня сбивает с толку, поскольку существует та же конечная точка для запроса «получить один», который работает успешно.

Я просмотрел документацию AWS по вызову del в библиотеке API amplify. Мой код во многом такой же, как тот код, и подходит для всех интенсивных целей. Я не понимаю, почему конечная точка действительна для вызова get, но недействительна для вызова удаления.

Насколько мне известно, профиль, который я использую на своем компьютере, имеет все привилегии, которые может иметь профиль пользователя. Действительно, я использовал максимально широкие права доступа для своего личного пользователя в своей учетной записи AWS.

Я попытался просмотреть ряд вопросов, но все они касаются GraphQL, связанного с этой темой, или невозможности удалить ресурс amplify, очевидно, это не очень помогает.

Ниже я прикрепил соответствующий код для двух функций. Функция, которая работает с одной и той же конечной точкой, функция «получить» и функция «удалить» — та, которая не работает. Тем не менее, весь репозиторий git находится здесь, если вы обнаружите, что вам нужна дополнительная информация для изучения этого.

GetOneCustomer — Работает

async function getOneCompany() {
  try {
    const restOperation = del({
      apiName: GladwyneAPIName,
      path: `${GladwynePath}/1`,
    });
    console.info("Get One Worked");
    const { body } = await restOperation.response;
    const response = await body.json();
    console.info("Response Recieved: ", response);
    return response;
  } catch (error) {
    console.info("Get Call Failed: ");
    console.info(error.response.body);
  }
}

Удалить одного клиента – не работает

async function deleteOneCustomer(customer) {
  try {
    const returnedStatusCode = del({
      apiName: GladwyneAPIName,
      path: `/Gladwyne/Customer/${customer.CustomerId}`,
      options: {
        queryParams: {
          CustomerId: customer.CustomerId,
        },
      },
    });
    const { body } = await returnedStatusCode.response;
    const returnedResult = await body.json();
    console.info("Returned Result: ", returnedResult);
    return returnedResult;
  } catch (error) {
    if (error instanceof ApiError) {
      if (error.response) {
        const { statusCode, headers, body } = error.response;
        console.error(
          `Received ${statusCode} error response with payload: ${body}`
        );
      }
    }
    console.info("Plain old error message: ", error);
    logger.error("Error from class: ", error);
  }
}

Я получаю ответ, Unknown Error: Unknown Error и это тоже

DELETE https://{ID}.execute-api.us-east-1.amazonaws.com/gladwyne/Gladwyne/Customer/3?CustomerId=3 404 (Not Found)

Когда я включаю расширенное ведение журнала, мне также возвращается этот объект. Вот оно чего стоит..

Received 404 error response with payload: <!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot DELETE /Gladwyne/Customer/3</pre>
</body>
</html>

Любые мысли/советы по этому вопросу будут оценены по достоинству.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
97
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я столкнулся с той же проблемой и нашел решение, проверив сгенерированный код Lambda.

Вместо:

await del({
  apiName: 'todo-api',
  path: '/todo/1'
});

Сделай это:

await del({
  apiName: 'todo-api',
  path: '/todo/object/1'
});

The difference is the `object` word in the `path`. Honestly I don't exactly understand why the api is like this but it works.

Другие вопросы по теме