노트 삭제 API 추가하기
This chapter has been archived and is no longer updated. View the current version of the guide.
노트 삭제 API 추가하기
마지막으로 사용자가 특정 노트를 삭제할 수 있는 API를 만들어 보겠습니다.
함수 추가하기
새로운 파일 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 };
});
이 코드는 userId
와 noteId
키를 사용해 DynamoDB delete
호출을 수행하여 노트를 삭제합니다.
API 엔드포인트 설정
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 요청 핸들러를 추가합니다.
테스트
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가 완성되었으니, 다음으로 배포를 진행해 봅시다!
For help and discussion
Comments on this chapter