노트 삭제 API 추가하기

마지막으로 사용자가 특정 노트를 삭제할 수 있는 API를 만들어 보겠습니다.

함수 추가하기

Change indicator 새로운 파일 delete.js를 생성하고 다음 코드를 붙여넣으세요.

import handler from "./libs/handler-lib";
import dynamoDb from "./libs/dynamodb-lib";

export const main = handler(async (event, context) => {
  const params = {
    TableName: process.env.tableName,
    // 'Key'는 삭제할 항목의 파티션 키와 정렬 키를 정의합니다.
    Key: {
      userId: "123", // 작성자의 ID
      noteId: event.pathParameters.id, // 경로에서 가져온 노트의 ID
    },
  };

  await dynamoDb.delete(params);

  return { status: true };
});

이 코드는 userIdnoteId 키를 사용해 DynamoDB delete 호출을 수행하여 노트를 삭제합니다.

API 엔드포인트 설정

Change indicator serverless.yml 파일을 열고 다음 내용을 추가합니다.

delete:
  # delete.js의 main 함수를 호출하는 HTTP API 엔드포인트를 정의합니다.
  # - path: URL 경로는 /notes/{id}
  # - method: DELETE 요청
  handler: delete.main
  events:
    - http:
        path: notes/{id}
        cors: true
        method: delete

이 설정은 /notes/{id} 엔드포인트에 DELETE 요청 핸들러를 추가합니다.

테스트

Change indicator mocks/delete-event.json 파일을 생성하고 다음 내용을 추가합니다.

이전과 마찬가지로 pathParameters 블록의 id 대신 우리의 노트 noteId를 사용합니다.

{
  "pathParameters": {
    "id": "578eb840-f70f-11e6-9d1a-1359b3b22944"
  }
}

루트 디렉토리에서 새로 생성한 함수를 호출합니다.

$ serverless invoke local --function delete --path mocks/delete-event.json

그러면 응답은 다음과 비슷하게 나타납니다.

{
    "statusCode": 200,
    "body": "{\"status\":true}"
}

이제 API가 완성되었으니, 다음으로 배포를 진행해 봅시다!