노트 삭제 API 추가하기
노트 삭제 API 추가하기
마지막으로 사용자가 특정 노트를 삭제할 수 있는 API를 만들어 보겠습니다.
함수 추가하기
packages/functions/src/delete.ts
파일을 새로 만들고 다음 코드를 붙여넣으세요.
import { Resource } from "sst";
import { Util } from "@notes/core/util";
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
import { DeleteCommand, DynamoDBDocumentClient } from "@aws-sdk/lib-dynamodb";
const dynamoDb = DynamoDBDocumentClient.from(new DynamoDBClient({}));
export const main = Util.handler(async (event) => {
const params = {
TableName: Resource.Notes.name,
Key: {
userId: "123", // 작성자 ID
noteId: event?.pathParameters?.id, // 경로에서 가져온 노트 ID
},
};
await dynamoDb.send(new DeleteCommand(params));
return JSON.stringify({ status: true });
});
이 코드는 userId
와 noteId
를 키로 사용해 DynamoDB에서 delete
호출을 수행하여 노트를 삭제합니다. 현재는 userId
를 하드코딩한 상태입니다.
라우트 추가하기
노트 삭제 API를 위한 새로운 라우트를 추가해 보겠습니다.
infra/api.ts
파일에서 PUT /notes{id}
라우트 아래에 다음 코드를 추가하세요.
api.route("DELETE /notes/{id}", "packages/functions/src/delete.main");
변경 사항 배포하기
터미널로 이동하면 변경 사항이 배포되고 있음을 확인할 수 있습니다.
새로운 API 스택이 배포된 것을 확인할 수 있습니다.
✓ Deployed:
StorageStack
ApiStack
ApiEndpoint: https://5bv7x0iuga.execute-api.us-east-1.amazonaws.com
API 테스트하기
노트 삭제 API를 테스트해 보겠습니다.
이전 챕터에서 노트 생성 API를 테스트했습니다. 이때 새 노트의 ID가 noteId
로 반환되었을 것입니다.
터미널에서 다음 명령어를 실행하세요.
$ curl -X DELETE https://5bv7x0iuga.execute-api.us-east-1.amazonaws.com/notes/<NOTE_ID>
URL 끝부분의 ID를 이전에 받은 noteId
로 바꿔주세요.
여기서는 삭제하려는 노트에 DELETE 요청을 보냅니다. 응답은 다음과 같이 표시됩니다.
{"status":true}
변경 사항 커밋하기
이제 변경 사항을 커밋하고 GitHub에 푸시해 보겠습니다.
$ git add .
$ git commit -m "API 추가"
$ git push
이제 우리의 API가 공개적으로 사용 가능해졌습니다. 이는 누구나 접근하여 노트를 생성할 수 있다는 의미입니다. 또한 항상 123
사용자 ID에 연결됩니다. 다음으로 사용자와 인증을 처리하여 이 문제를 해결해 보겠습니다.
For help and discussion
Comments on this chapter