メインコンテンツまでスキップ
バージョン: 2.0.0

クイックスタート

概要

NewtZeroSDKはAPIの開発を迅速に行うための開発キットです。 以下のようなアプリケーション開発に必要な機能を持ったAPIを簡単に開発できます。

機能説明
認証機能の開発ユーザーがシステムやアプリケーションにアクセスする際に、そのユーザーの正当性を確認するプロセス。
権限機能の開発ユーザーがシステムやアプリケーション内で行える操作の範囲を制御するための機能。
CRUD機能の開発データベースや情報システムにおける基本的な操作の頭文字を取った用語。
バリデーション機能の開発ユーザーが入力したデータが、指定された条件や形式に適合しているかどうかを検証するプロセス。

NewtZeroSDKを用いて開発することで以下のようなメリットがあります。

  1. 開発効率の向上

簡単なインターフェース: SDKは、APIを利用するための高レベルなインターフェースを提供します。これにより、開発者は低レベルの詳細に悩まされることなく、簡単に機能を利用できます。 TypeScript(JavaScript)の一般的な知識があればすぐに利用する事ができます。

時間の節約: SDKを使用することで、開発者はAPIの細かい実装を一から行う必要がなくなり、開発時間を大幅に短縮できます。

  1. 一貫性と信頼性

一貫した使用方法: SDKはAPIの使用方法を統一し、開発者が一貫した方法でAPIを利用できるようにします。これにより、誤った使用や不正な呼び出しを減らすことができます。

  • レスポンスボディを共通化できます。
  • エラーメッセージを共通化できます。

バグの減少: SDKはAPI呼び出しに対する適切なエラーハンドリングやバリデーションを提供するため、バグやエラーが発生する可能性が減少します。


本書の対象者

  • 開発者

必要知識

  • typescriptの基本的な知識
  • JavaScriptの基本的な知識
  • NodeJSの基本的な知識
  • REST APIの基本的な知識
  • Dockerの基本的な知識

利用を開始する

はじめに一般的な構成でNode.jsのプロジェクトを構成してください。

SDKをダウンロードします。

※SDKの提供方法は異なる場合があります。管理者にお問い合わせください。

$ yarn add newtzero-sdk

使用方法は簡単で、 Node.jsのエントリポイントとなるmain.tsに以下のように記述するだけです。

import {
NewtZeroSDK
} from "newtzero-sdk";

const nz = new NewtZero({
mongoProps: {
mongoHost: "localhost:27017",
dbName: "newtzero-db"
}
});

await nz.loadConfigs();
await nz.startServer();

これだけのコードでNewtZeroSDKのセットアップは完了です。 ただし、この状態ではAPIを何も作成していないので、何の機能もありません。 続いて簡単なAPIを追加してみます。

その前にNewtZeroSDKをつかったAPIのフォルダ構成を説明します。

.
├── Dockerfile
├── README.md
.
.
中略
.
.
├── dist
├── node_modules
├── optx-conf.json
├── package.json
├── src
│ ├── cms
│ │ ├── item
│ │ │ └── index.ts
│ │ ├── order
│ │ │ └── index.ts
│ │ ├── category
│ │ │ └── index.ts
│ │ └── shop
│ │ └── index.ts
│ ├── linkage
│ │ └── alertJob
│ │ └── index.ts
│ └── main.ts
└── tsconfig.json

NodeJSで開発を行った事がある方には見慣れた構造になっている思います。
/srcディレクトリにcmsディレクトリ,linkageディレクトリがあります。 cmsフォルダの中に作成するファイルはCollectionConfigといいます。(src/cms/order/index.tsなどが該当します。) CollectionConfigでテーブル、APIの動作すべてを定義します。ここに作成されたファイルの内容を元にAPIが生成される仕組みです。

例えばpostorders,categories,itemsといったアプリケーションに必要なテーブルを定義します。

CollectionConfigにはテーブルの設定や、権限の設定、バリデーションなどを行う関数を設定します。

シンプルなCllectionConfigのサンプル

import { CollectionConfig } from "newtzero-sdk";

const ItemConfig: CollectionConfig = {
version: 2,
projectName: "My-First-EC-Shop",
slug: "item",
collectionName: "item",
assetConfig: {
assetId: "EC-SHOP-ITEM",
assetName: "ECommerce-ShopItem",
uniqueKeys: ["contents.rawdata.alertJobId"],
primaryKey: "contents.rawdata.alertJobId",
},

customBaseUrl: "/api/1",
authorization: {
create: () => false,
read: () => false,
readMany: () => false,
update: () => false,
delete: () => false,
},
access: {
create: (req, user) => true,
read: (req, user) => true,
readMany: (req, user) => true,
update: (req, user) => true,
delete: (req, user) => true,
}
};

export default ItemConfig;

このコンフィグはECサイトの商品に関する設定です。 このサンプルではhttp://localhost:3000/api/1/itemPOST,READ,UPDATE,DELETEの各種CRUDのAPIが生成されます。

localhost:3000の部分は実行環境に合わせて変更してください。

main.tsを実行して、webServerを起動し、POSTやREADリクエストを試してみてください。 正常なリクエストが返れば成功です。