노트 조회 API 추가하기
노트 조회 API 추가하기
이제 노트를 생성하고 데이터베이스에 저장했습니다. 노트 ID를 기반으로 노트를 조회할 수 있는 API를 추가해 보겠습니다.
함수 추가하기
프로젝트 루트에 get.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
},
};
const result = await dynamoDb.get(params);
if (!result.Item) {
throw new Error("항목을 찾을 수 없습니다.");
}
// 조회된 항목을 반환합니다
return result.Item;
});
이 코드는 이전에 작성한 create.js
함수와 동일한 구조를 따릅니다. 주요 차이점은 userId
(여전히 하드코딩됨)와 요청을 통해 전달된 noteId
를 사용해 노트 객체를 가져오기 위해 dynamoDb.get(params)
를 사용한다는 점입니다.
API 엔드포인트 설정
serverless.yml
파일을 열고 다음 내용을 추가하세요.
get:
# get.js의 main 함수를 호출하는 HTTP API 엔드포인트를 정의합니다.
# - path: URL 경로는 /notes/{id}
# - method: GET 요청
handler: get.main
events:
- http:
path: notes/{id}
cors: true
method: get
이 블록이 앞의 create
블록과 동일한 들여쓰기로 되어 있는지 확인하세요.
이 설정은 노트 조회 API를 정의합니다. /notes/{id}
엔드포인트에 GET 요청 핸들러를 추가합니다. 여기서 {id}
는 위 함수에서 사용한 event.pathParameters.id
로 변환됩니다.
테스트
노트 조회 API를 테스트하려면 noteId
파라미터를 모킹해야 합니다. 이전 장에서 생성한 노트의 noteId
를 사용하고, 모의 데이터에 pathParameters
블록을 추가합니다. 아래와 비슷한 형태가 될 것입니다. id
값을 이전에 create.js
함수를 실행했을 때 받은 ID로 바꿔주세요.
mocks/get-event.json
파일을 생성하고 다음 내용을 추가합니다.
{
"pathParameters": {
"id": "a63c5450-1274-11eb-81db-b9d1e2c85f15"
}
}
그리고 프로젝트 루트 디렉토리에서 새로 만든 함수를 실행합니다.
$ serverless invoke local --function get --path mocks/get-event.json
응답은 다음과 비슷하게 나올 것입니다.
{
"statusCode": 200,
"body": "{\"attachment\":\"hello.jpg\",\"content\":\"hello world\",\"createdAt\":1603157777941,\"noteId\":\"a63c5450-1274-11eb-81db-b9d1e2c85f15\",\"userId\":\"123\"}"
}
다음으로, 사용자가 가진 모든 노트를 조회하는 API를 만들어 보겠습니다.
For help and discussion
Comments on this chapter