노트를 가져오는 API 추가하기
노트 조회 API 추가하기
이전에 노트를 생성하고 데이터베이스에 저장했으니, 이제는 특정 id를 가진 노트를 조회할 수 있는 API를 추가해 보겠습니다.
함수 추가하기
packages/functions/src/get.ts
파일을 생성하고 다음 내용을 추가합니다:
import { Resource } from "sst";
import { Util } from "@notes/core/util";
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
import { GetCommand, 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'는 검색할 항목의 파티션 키와 정렬 키를 정의합니다
Key: {
userId: "123", // 작성자 ID
noteId: event?.pathParameters?.id, // 경로에서 전달된 노트 ID
},
};
const result = await dynamoDb.send(new GetCommand(params));
if (!result.Item) {
throw new Error("항목을 찾을 수 없습니다.");
}
// 검색된 항목을 반환합니다
return JSON.stringify(result.Item);
});
이 코드는 이전에 작성한 create.ts
함수와 동일한 구조를 따릅니다. 주요 차이점은 요청을 통해 전달된 userId
(아직 하드코딩됨)와 noteId
를 사용하여 노트 객체를 가져오기 위해 GetCommand(params)
를 사용한다는 점입니다.
라우트 추가
노트 조회 API를 위한 새로운 라우트를 추가해 보겠습니다.
infra/api.ts
파일에서 POST /notes
라우트 아래에 다음 코드를 추가합니다.
api.route("GET /notes/{id}", "packages/functions/src/get.main");
변경 사항 배포하기
터미널로 이동하면 변경 사항이 배포되고 있는 것을 확인할 수 있습니다.
새로운 API가 배포된 것을 확인할 수 있습니다.
+ Complete
Api: https://5bv7x0iuga.execute-api.us-east-1.amazonaws.com
API 테스트하기
노트 조회 API를 테스트해 보겠습니다. 이전 장에서 노트 생성 API를 테스트했는데, 이때 새로 생성된 노트의 ID가 noteId
로 반환되었을 것입니다.
터미널에서 다음 명령어를 실행하세요.
$ curl https://5bv7x0iuga.execute-api.us-east-1.amazonaws.com/notes/<NOTE_ID>
ApiEndpoint
값을 여러분의 엔드포인트 URL로 바꾸고, URL 끝의 <NOTE_ID>
를 이전에 생성된 noteId
로 변경해야 합니다.
단순한 GET 요청이기 때문에 브라우저에서 이 URL로 직접 접속해도 됩니다.
응답은 다음과 비슷하게 나타납니다.
{"attachment":"hello.jpg","content":"Hello World","createdAt":1629336889054,"noteId":"a46b7fe0-008d-11ec-a6d5-a1d39a077784","userId":"123"}
다음으로, 사용자가 가진 모든 노트를 나열하는 API를 만들어 보겠습니다.
For help and discussion
Comments on this chapter