単純なFastify APIをtypescriptで作成し、それを展開する


このチュートリアルでは、FastifyとTypesScriptでシンプルなAPIを構築する方法と、ScaleDynamicsプラットフォームに配置する方法を参照してください.

導入


Fastify がノードです.HTTP APIを構築するためのJS Webフレームワーク.これは、使いやすく、高速にするように設計されます.それはExpressとHAPIに触発さ強力なプラグインアーキテクチャを持っています.それは、パフォーマンスを犠牲にすることなく念頭に置いて開発経験を持つデザインです.

ゴール


私たちの目標は、いくつかのユーザーからフェッチされるユーザーを返すtypescriptとfastify APIのための簡単な出発点を構築することですjsonplaceholder . 次に、任意のアプリケーションから使用できるように、ScaleDynamicsプラットフォームに配備します.

必要条件


続くためには、
  • ノード.JSと糸/NPMはインストールされます.行けますhere ノードの最新バージョンをダウンロードします.JSとNPM
  • いくつかの基本TypeScript 知識
  • プロジェクトのセットアップ


    フォルダを作成し、NPMを初期化しましょう.
    mkdir fastify-api
    yarn init
    
    プロンプトでオプションを気にしないでください、あなたは直接あなたのこのコードを使用することができますpackage.json ファイル
    {
      "name": "fastify",
      "version": "1.0.0",
      "main": "src/index.ts",
      "license": "MIT",
      "scripts": {
        "build": "tsc -p tsconfig.json",
        "start": "node ./dist/index.js"
      },
      "dependencies": {
        "@types/node": "^17.0.23",
        "axios": "^0.26.1",
        "fastify": "^3.28.0"
      },
      "devDependencies": {
        "typescript": "^4.6.3"
      }
    }
    
    依存関係をインストールする
    yarn
    
    今、我々はAを作成する必要がありますtsconfig.json TypeScriptを設定するには、次のように実行します.
    npx tsc --init
    
    私たちは今それを変更する必要があります.
    {
      "compilerOptions": {
        "target": "esnext" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */,
        "module": "commonjs" /* Specify what module code is generated. */,
        "outDir": "./dist" /* Specify an output folder for all emitted files. */,
        "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */,
        "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */,
        "strict": true /* Enable all strict type-checking options. */
      }
    }
    
    プロジェクトは現在、準備ができています.

    ビルドAPI


    クリエイトアsrc プロジェクトのルートでフォルダを作成し、index.ts ファイルの内部:
    import axios from "axios";
    import fastify from "fastify";
    
    const server = fastify();
    
    server.get("/users", async (): Promise<User[]> => {
      return (await axios.get("https://jsonplaceholder.typicode.com/users")).data;
    });
    
    server.listen(8080, (err, address) => {
      if (err) {
        console.error(err);
        process.exit(1);
      }
      console.log(`Server listening at ${address}`);
    });
    
    我々のAPIは単にjsonplaceholder 我々が呼ぶとき/users .
    の定義を追加する必要がありますUser タイプを作成するdomain フォルダとuser.d.ts ファイル内部:
    type User = {
      id: number;
      name: string;
      username: string;
      email: string;
      address: Address;
      phone: string;
      website: string;
      company: Company;
    };
    
    type Address = {
      street: string;
      suite: string;
      city: string;
      zipcode: string;
      geo: Geolocalisation;
    };
    
    type Geolocalisation = {
      lat: string;
      lng: string;
    };
    
    type Company = {
      name: string;
      catchPhrase: string;
      bs: string;
    };
    
    JavaScriptに変換して実行するには、次のコードを構築できます.
    yarn build
    yarn start
    
    実行してユーザーを取得します.
    curl localhost:8080/users
    
    次のようにユーザーをダンプする必要があります.

    パーフェクト!では、ScaleDynamicsプラットフォームにAPIを配備しましょう.

    アカウントの作成とリソースの選択


    ScaleDynamicsの雲にこのアプリケーションを展開するには、アカウントが必要ですし、リソースを使用して環境を作成します.クラウドリソースは、仮想CPUとアプリケーションを実行するために使用されるストレージ容量を提供します.このチュートリアルでは、ScaleDynamicsのクラウドで利用できる無料の共有リソースを使用します.これらはテストに最適です.このチュートリアルでは、パブリッククラウドプロバイダとお好みの地域の専用生産リソースにアップグレードする方法を後で参照してください.
    あなたがアカウントを持っていない場合は、1つを作成する自由here (無料ですし、クレジットカードは必要ありません).アカウントが作成されたら、ログインしてください.
    ScaleDynamicsの上でプロジェクトと環境をつくりましょうconsole . 組織を選択し、新しいプロジェクトを作成し、新しい環境を作成します.今、我々は我々の展開に必要なサービスを選択する必要があります.4種類あります.
  • 管理HTTP Docker
  • 管理ノード.jsサーバー
  • 管理ノード.JSモジュール
  • 静的資産ホスティング
  • APIにはサーバが必要です.管理されたノードを選びましょう.jsサーバー.あなたは、他のタイプでより多くを学ぶことができますScaleDynamics documentation .

    展開


    環境は、アプリケーションを実行する準備が整いました.

    設定ファイル


    まず、SDKにどのようなアプリケーションを展開したいのかを設定する設定を加えましょう.プロジェクトのルートでwarp.config.js ファイル
    // warp.config.js
    module.exports = {
      server: "fastify",
    };
    

    ビルド


    TypeScriptスクリプトをJavaScriptにコンパイルするプロジェクトを構築します
    yarn build
    

    ログイン


    アカウントにログインし、プロンプトを介して組織を選択します
    npx warp login
    

    配備する


    最後に、展開コマンドを実行できます.
    npx warp deploy ./
    
    このコマンドは以下のようにダンプします:

    サーバーが設定ファイルから検出されたことがわかります.プロンプトに従って、作成したプロジェクトを選択し、環境を選択します.プロンプトはまた、ホスト名を求める場合は、ランダムな名前の空白を残すことができますかを使用します.最後に、ホストを選択できます.
    展開数分かかります.
    それが完了したら、あなたのブラウザを開くことができますし、URLとタダに行く!あなたのAPIはライブです!

    さらに進んでください:専用の資源


    専用リソースを使用する場合は、非共有リソースに動的にアップグレードできます.下に示すようにいくつかのマウスクリックとして簡単です.

    次の手順


    この段階では、完全に機能的なAPIを持っています.あなたはScaleDynamicsの詳細を学ぶことができますdocumentation , サーバーのログを取得する方法と同様に、カスタムドメインを使用し、CI/CDパイプラインなどを実装します.
    楽しむ!