Deno 및 Oak Framework를 사용한 REST API 구축 가이드

Susan Sarandon
풀어 주다: 2024-11-03 10:34:02
원래의
510명이 탐색했습니다.

이 게시물에서는 Deno, Oak 프레임워크 및 DenoKV 데이터베이스를 사용하여 REST API를 생성하는 방법을 안내합니다.

이 모든 작업을 수행하기 위해 간단한 도서 API를 구축하겠습니다. 하지만 먼저 이러한 기술을 이해해 봅시다.

데노란 무엇인가?

데노는 복잡하지 않은 자바스크립트를 지향합니다.

이는 개발자가 Node.js에서 직면하는 많은 문제를 해결함으로써 이루어집니다. Deno의 간단한 접근 방식은 개발자가 보다 안전하고 효율적이며 현대적인 JavaScript 코드를 작성하는 데 도움이 됩니다.

Deno의 가장 큰 장점은 보안입니다. 기본적으로 개발자가 명시적으로 허용하지 않는 한 파일 시스템, 네트워크 또는 환경 변수에 대한 액세스를 허용하지 않습니다. Deno는 또한 개발자에게 추가 구성 없이 기본 TypeScript 지원을 제공합니다.

Deno와 함께 제공되는 기타 기능은 다음과 같습니다.

  • 내장된 표준 라이브러리로 많은 타사 패키지가 필요하지 않습니다
  • URL 기반 가져오기를 직접 지원하는 최신 모듈 시스템
  • 형식 지정, Linting 및 테스트용 도구가 내장된 향상된 CLI
  • CommonJS 대신 ES 모듈을 사용한 일관된 JavaScript 경험.

오크 란?

Oak은 개발자가 웹 앱과 API를 구축하는 데 도움을 주는 Deno용 미들웨어 프레임워크입니다.

Node.js의 Express와 유사하게 HTTP 요청 처리, 라우팅 관리, 미들웨어 통합을 위한 도구를 제공합니다. Oak는 또한 즉시 사용 가능한 TypeScript를 갖추고 있으며 Deno의 보안 및 최신 런타임 환경의 이점을 제공합니다. 이를 통해 개발자는 보다 현대적인 기능을 즐기면서도 친숙한 구문을 사용할 수 있습니다.

Oak을 통해 개발자는 안전하고 효율적이며 진보적인 환경에서 TypeScript 우선 방식을 채택할 수 있습니다.

DenoKV 란 무엇입니까?

DenoKV는 Deno의 정형 데이터를 관리하는 키-값 데이터베이스입니다.

각 데이터 또는 '값'에는 고유 식별자 또는 '키'가 있으므로 해당 키를 참조하여 데이터를 쉽게 가져올 수 있습니다. 이 접근 방식을 사용하면 개발자는 별도의 데이터베이스 서버를 설정하지 않고도 데이터를 관리할 수 있습니다. DenoKV는 경량 애플리케이션과 빠른 프로토타이핑에 이상적입니다.

개발자는 코드와 함께 데이터를 바로 관리할 수 있는 간단한 솔루션을 얻을 수 있습니다.

프로젝트 설정

데노 설치

curl -fsSL https://deno.land/install.sh | sh
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

macOS의 경우: Shell 사용

irm https://deno.land/install.ps1 | iex
로그인 후 복사
로그인 후 복사
로그인 후 복사

Windows의 경우: PowerShell 사용

curl -fsSL https://deno.land/install.sh | sh
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

Linux의 경우: 셸 사용
설치를 테스트하려면 deno -version을 실행하세요.

Guide to Building a REST API with Deno and Oak Framework

새 프로젝트 만들기

deno init deno-oak-demo 명령을 실행하여 deno-oak-demo라는 새 프로젝트를 만든 다음 CD로 들어갑니다

Guide to Building a REST API with Deno and Oak Framework

다음으로 deno-oak-demo 디렉터리에 4개의 새 파일을 만들어야 합니다.

  • book.routes.ts
  • book.dto.ts
  • book.types.ts
  • 그리고 유효성 검사.ts

이제 deno-oak-demo 디렉토리는 다음과 같습니다
Guide to Building a REST API with Deno and Oak Framework

Deno VSCode 확장 설치

다음으로 Visual Studio Code에서 Deno를 사용할 수 있도록 지원하는 Deno의 공식 VSCode 확장을 설치해야 합니다.

Guide to Building a REST API with Deno and Oak Framework

오크 설치

deno add jsr:@oak/oak 명령을 사용하여 Oak 프레임워크를 종속성으로 설치합니다.
이제 deno.json 파일은 다음과 같습니다

Guide to Building a REST API with Deno and Oak Framework

Deno에 패키지를 설치할 때마다 deno.json 파일에 가져오기로 배치됩니다. 그런 다음 이 패키지를 파일로 가져오려면 deno.json에 정의된 별칭을 사용하거나 패키지의 URL을 직접 참조하면 됩니다.

유형 및 DTO 정의

book.types.ts 파일에 다음 코드를 추가하세요

curl -fsSL https://deno.land/install.sh | sh
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

book.dto.ts 파일에 이것을 추가하세요

irm https://deno.land/install.ps1 | iex
로그인 후 복사
로그인 후 복사
로그인 후 복사

요청 검증

validation.ts에 다음 코드를 추가하세요

curl -fsSL https://deno.land/install.sh | sh
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

북 라우터 구성

시작하려면 Oak Router, Book 인터페이스, createBookSchema 및 updateBookSchema를 book.routes.ts 파일로 가져옵니다.

export interface Book {
    id: string;
    title: string;
    author: string;
    description: string;
}
로그인 후 복사
로그인 후 복사

다음으로 DenoKV 데이터베이스를 초기화하고 HTTP 경로를 처리할 새 라우터 인스턴스를 생성하겠습니다.

export interface CreateBookDTO {
    title: string;
    author: string;
    description: string;
}
로그인 후 복사

다음으로, ID로 책을 가져오는 도우미 함수를 만들어 보겠습니다.

import { z } from "https://deno.land/x/zod@v3.17.0/mod.ts";

export const createBookSchema = z.object({
    title: z.string(),
    author: z.string(),
    description: z.string(),
});

export const updateBookSchema = z.object({
    title: z.string().optional(),
    author: z.string().optional(),
    description: z.string().optional(),
});
로그인 후 복사

kv.get은 두 개의 문자열이 포함된 배열을 사용합니다. 하나는 네임스페이스 "books"를 나타내고 다른 하나는 검색되는 특정 책에 대한 키를 나타냅니다.
다음으로, ID로 단일 책을 가져오는 경로 핸들러를 정의해 보겠습니다.

import { Router } from "@oak/oak/router";
import type { Book } from "./book.types.ts";
import { createBookSchema, updateBookSchema } from "./validation.ts";
로그인 후 복사

Express와 달리 Oak에서는 요청 데이터와 응답 메서드가 모두 있는 컨텍스트 개체에서 요청과 응답 모두에 액세스하므로 HTTP 상호 작용을 처리하는 간소화된 방법을 제공합니다.

다음으로 경로 핸들러를 추가하여 모든 책을 가져옵니다.

const kv = await Deno.openKv();
const bookRouter = new Router;
로그인 후 복사

Kv.list는 공통 접두사(네임스페이스)를 공유하는 모든 키-값 쌍을 검색합니다.

다음으로 경로 핸들러를 추가하여 새 책을 만듭니다.

async function getBookById(id: string) {
    const entry = await kv.get(["books", id]);
    return entry.value as Book | null;
}
로그인 후 복사

Kv.set를 사용하면 새로운 키-값 쌍을 DB에 저장할 수 있습니다. 이 경우 배열(두 개의 문자열, 네임스페이스 및 키 포함)과 저장할 값을 사용합니다.

다음으로 경로 핸들러를 추가하여 ID별로 책을 업데이트하세요.

curl -fsSL https://deno.land/install.sh | sh
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

kv.set를 사용하여 키-값 쌍의 값을 업데이트할 수도 있습니다. 이 경우 배열(두 개의 문자열, 네임스페이스, 값이 업데이트될 키 포함)과 업데이트할 새 값을 사용합니다.
마지막으로 id:
로 책을 삭제하는 경로 핸들러를 추가해 보겠습니다.

irm https://deno.land/install.ps1 | iex
로그인 후 복사
로그인 후 복사
로그인 후 복사

kv.delete는 지정된 키-값 쌍을 삭제합니다.

Oak 애플리케이션 초기화

main.ts 파일에 다음 코드를 추가하세요.

curl -fsSL https://deno.land/install.sh | sh
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

앱 실행

앱을 실행하려면 deno.json을 약간 변경해야 합니다.

export interface Book {
    id: string;
    title: string;
    author: string;
    description: string;
}
로그인 후 복사
로그인 후 복사

DenoKV는 여전히 불안정한 API이기 때문에 --stable-kv 플래그를 추가했습니다.

또한 Deno 네트워크 액세스 권한을 부여하기 위해 --allow-net 플래그를 추가했습니다.

이렇게 되면 deno run dev를 실행하여 앱을 시작할 수 있습니다.

결론

포스팅이 끝났습니다.

이제 Deno Oak와 DenoKV 데이터베이스를 사용하여 REST API를 생성할 수 있습니다.

위 내용은 Deno 및 Oak Framework를 사용한 REST API 구축 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿