이전 기사에서, 우리는 왜 내가 Node.js에 Azure Functions를 사용하는 것을 좋아하는지 살펴보았습니다. 이 문서에서는 Azure Table Storage 데이터베이스에 CRUD 작업을 위한 REST API를 생성하여 한 단계 더 나아가려고 합니다.
시작하기
이 튜토리얼에서는 Azure 계정이 필요합니다. 이것은 대부분 무료이고 그들은 새로운 사용자들에게 200달러의 크레딧을 준다. 그러니 https://azure.microsoft.com으로 가서 계정을 등록하세요.
저는 또한 VS 코드에서 Azure Extension을 사용할 것입니다. 이를 통해 VS Code에서 직접 기능과 같은 인프라를 쉽게 만들 수 있습니다. 설치 방법을 잘 모르겠으면 제 이전 글을 참고하세요.
또한 Azure Storage Explorer도 사용할 예정입니다. 이 애플리케이션을 통해 Azure 스토리지를 시각화할 수 있습니다. Azure Table Storage 데이터베이스 테이블의 변경 사항을 볼 수 있습니다.
데이터베이스
위와 같이 Azure Table Storage를 데이터베이스로 활용할 예정입니다. 키/값 쌍을 사용하는 빠르고 저렴한 NoSQL 데이터 저장소입니다. 매우 빠른 작업을 위해 파티션 및 행 키를 사용합니다.
중요한 점은 파티션과 행 키의 조합이 고유해야 한다는 것입니다. 파티션 키는 유사한 레코드를 그룹화하는 방법이고 행 키는 해당 레코드의 ID로 생각할 수 있습니다. 이 두 개의 키를 어떻게 구조화할지 신중히 생각함으로써, 우리는 데이터베이스에서 초고속 읽기를 얻을 수 있다.
포털
데이터베이스를 프로비저닝하려면 테이블을 보관할 스토리지 계정을 생성해야 합니다. 이렇게 하려면 Azure Portal에 로그인하여 상단에서 스토리지를 검색한 후 클릭하십시오.
다음으로 만들기
를 클릭합니다.
그런 다음 구독, 리소스 그룹(없거나 새로 만들려면 새로 만들기), 저장소 계정 이름, 가장 가까운 지역을 선택하고 검토 + 만들기를 클릭한 후 다음 페이지 하단에서 만들기를 클릭하여 저장소를 만들어야 합니다.
액세스 키
계정이 생성된 후에는 Azure Functions에서 데이터베이스 테이블에 연결할 수 있도록 액세스 키를 가져와야 합니다. 이 정보를 찾으려면 스토리지 탭으로 돌아가서 방금 만든 스토리지 계정을 찾아 클릭한 다음 액세스 키로 이동하십시오. 그런 다음 첫 번째 키를 복사하여 나중에 사용할 수 있도록 저장합니다.
하늘색 저장소 탐색기
이제 스토리지 계정이 생겼으니 Azure Storage Explorer에서 계정을 열 수 있습니다. 처음 시작할 때 Azure 계정에 로그인하라는 메시지가 표시됩니다. 그런 다음 왼쪽 내비게이션에 스토리지 계정이 표시됩니다.
계정을 클릭하여 개별 스토리지 유형을 엽니다. 그런 다음 테이블
을 클릭합니다. 테이블 아래에는 로깅 테이블이 있습니다. 그냥 무시하셔도 돼요.
새 테이블을 만들려면 테이블
을 마우스 오른쪽 단추로 클릭한 후 [생성]을 클릭하십시오. 이 데모를 위해 사용자의 블로그 게시물을 저장할 수 있는 포스트
테이블을 만들 것입니다.
REST API
이제 데이터베이스 테이블을 만들었으므로 REST API를 시작할 수 있습니다. 이렇게 하려면 VS 코드를 열고 Azure 확장 탭으로 이동합니다. 그 아래에서 기능 부분을 찾아서 번개 아이콘이 있는 폴더를 클릭하세요.
그런 다음 파일 탐색기가 열리고 프로젝트를 만들 위치를 선택할 수 있습니다. 데스크톱에 ajure-functions-rest-api-tut
이라는 폴더를 만들 것입니다. 그런 다음 다음 질문에 답하라는 메시지가 표시됩니다.
- 언어 선택: JavaScript
- 프로젝트의 첫 번째 기능에 사용할 템플릿을 선택하십시오. HTTP 트리거
- 함수 이름 제공: 게시물 작성
- 인증 수준: 익명
- 프로젝트를 여는 방법을 선택하십시오. 현재 창에서 열기
CreatePost 함수
이제 프로젝트가 생성되고 CreatePost라는 폴더가 있습니다. 해당 폴더 안에는 코드가 위치한 index.js 파일과 함수의 설정이 포함된 function.json 파일이 있습니다.
기본적으로 우리 기능은 POST와 GET 요청을 모두 허용합니다. CreatePost 방법은 POST 요청만 허용하고 싶습니다. funciton.json 파일 내에서 메서드 배열을 찾아 "get"을 제거합니다. 파일은 다음과 같아야 합니다.
테이블 서비스
이제 CRUD 작업에 대한 논리를 우리 테이블에 작성해야 합니다. 그러기 위해서는 Azure Storage SDK를 프로젝트에 설치해야 합니다. 설치하려면 VS 코드(Terminal => New Terminal)에서 터미널을 열고 다음 명령을 실행합니다.
npm i azure-storage
다음으로, 우리는 우리 프로젝트의 근저에 서비스라고 불리는 새로운 폴더를 만들 것입니다. 그 폴더 안에 table-services.js라는 파일을 추가할 겁니다. 파일 상단에 다음 줄을 추가하여 Azure 스토리지를 초기화합니다.
var azure = require('azure-storage');
var tableSvc = azure.createTableService('myaccount', 'myaccesskey');
myaccount
를 스토리지 계정 이름으로 바꾸십시오. 액세스 키를 소스 제어로 체크하고 싶지 않으니 로컬 위치로 이동하세요.settings.json은 프로젝트의 루트 디렉터리에 있습니다. Values 개체 아래에 "AZURE_STOREBY_ACCESSION_KEY"라는 새 속성을 추가하고 해당 값을 액세스 키에 설정합니다.
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "",
"FUNCTIONS_WORKER_RUNTIME": "node",
"AZURE_STORAGE_ACCESS_KEY": "your storage account access key"
}
}
그런 다음 다시 파일에 올바른 값을 전달하도록 초기화 방법을 변경하겠습니다.
var tableSvc = azure.createTableService(
"mediumtutorial",
process.env.AZURE_STORAGE_ACCESS_KEY
);
테이블 서비스를 초기화했으므로 스토리지 테이블에 포스트를 삽입하는 작업을 할 수 있습니다. 이를 위해 insertEntity라는 새로운 메소드를 만들겠습니다. 이 메서드는 테이블 및 도면요소의 이름을 매개 변수로 사용합니다.
그런 다음 SDK를 사용하여 레코드를 삽입하겠습니다. 새로 만든 레코드를 반환하려면 echoContent: true 옵션을 설정하고 응답에서 메타데이터를 제거하려면 payloadFormat: "응용 프로그램/json;odata=nometadata"
SDK는 콜백 기능을 사용하고 있고 비동기/대기 기능을 사용하고 싶기 때문에, Promise에서 호출을 래핑하겠습니다.
const insertEntity = (tableName, entity) => {
return new Promise((resolve, reject) => {
tableSvc.insertEntity(
tableName,
entity,
{ echoContent: true, payloadFormat: "application/json;odata=nometadata" },
function (error, result, response) {
if (error) {
reject(error);
}
resolve(result);
});
});
};
exports.insertEntity = insertEntity;
이 방법을 일반으로 만듦으로써 블로그 포스트 엔드포인트가 아닌 다른 엔드포인트에서 사용할 수 있습니다.
CreatePost 함수로 돌아가기
이제 CreatePost 폴더로 돌아가서 index.js를 엽니다. context.res 개체를 제외한 모든 개체를 제거하십시오. 요청 본문에서 사용자의 블로그 이름, 제목 및 내용을 포함한 블로그 게시물의 세부 정보를 전달합니다. 그걸 이용해서 우리의 실체를 만들어내서 테이블로 넘길거야
또한 요청 본문이 있는지 확인하고 모든 필드가 통과되었는지 확인하고 모든 항목을 트라이 캐치로 포장합니다. 파일은 다음과 같이 표시됩니다.
비디오 튜토리얼
줄 바꿈
이제 CreatePost 방식이 작동하므로, 이 시리즈의 파트 1을 마무리하겠습니다. 파트 2에서는 GET, PUT, DELETE 메소드를 API에 추가하는 작업을 할 것입니다. 그러니 블로그를 구독하면 해당 글이 게시될 때 더 많은 알림을 받을 수 있습니다. 그리고 다음 시간까지 해피 코딩!
'프로그래밍' 카테고리의 다른 글
청정 코드 및 모범 코딩 관행을 달성하기 위한 가이드 (0) | 2022.01.04 |
---|---|
2022년에 배울 최고의 프로그래밍 언어 (0) | 2022.01.04 |
튜토리얼 입력 데이터 Mahasiswa Mengunakan Bahasa Pemrograman C++ (0) | 2021.12.30 |
C — SS 블로그의 배열을 사용한 스택 구현 (0) | 2021.12.30 |
(도커) docker.io mysql에 대한 오류 [내부] 로드 메타데이터 (0) | 2021.12.30 |
댓글