「Server
」クラス
HTTPリクエスト(HTTPSプロトコルを含めて)の処理機能を提供している、当フレームワークの 主要なクラスである。
パブリック静的メソッド
単一の引数で渡された設定通りサーバアプリケーションを初期化し、起動する。 一番簡単な場合だと、下記の様なコードに成る。
import { Server, Request, Response, ProtocolDependentDefaultPorts } from "@yamato-daiwa/backend";
import { HTTP_Methods } from "@yamato-daiwa/es-extensions";
Server.initializeAndStart({
IP_Address: "127.0.0.1",
HTTP: { port: ProtocolDependentDefaultPorts.HTTP },
routing: [
{
route: { HTTP_Method: HTTP_Methods.get, pathTemplate: "/" },
async handler(request: Request, response: Response): Promise<void> {
return response.submitWithSuccess({ HTML_Content: "<h1>Hello, world!</h1>" });
}
}
]
});
単一の引数で渡された設定通りサーバアプリケーションの初期化はするが、起動はしない。
起動は後ほどstart
非静的なメソッドで実行可能。
import { Server, Request, Response, ProtocolDependentDefaultPorts } from "@yamato-daiwa/backend";
import { HTTP_Methods } from "@yamato-daiwa/es-extensions";
const serverApplication: Server = Server.initialize({
IP_Address: "127.0.0.1",
HTTP: { port: ProtocolDependentDefaultPorts.HTTP },
routing: [
{
route: { HTTP_Method: HTTP_Methods.get, pathTemplate: "/" },
async handler(request: Request, response: Response): Promise<void> {
return response.submitWithSuccess({ HTML_Content: "<h1>Hello, world!</h1>" });
}
}
]
});
// ...
serverApplication.start();
パブリック・インスタンス・メソッド
Server
クラスのインスタンスで代表されている
サーバアプリケーションのインスタンスを実行する。
クラスのインスタンスを、事前に
initialize
と言う静的メソッドで
取得しなければいけない。
import { Server, Request, Response, ProtocolDependentDefaultPorts } from "@yamato-daiwa/backend";
import { HTTP_Methods } from "@yamato-daiwa/es-extensions";
const serverApplication: Server = Server.initialize({
IP_Address: "127.0.0.1",
HTTP: { port: ProtocolDependentDefaultPorts.HTTP },
routing: [
{
route: { HTTP_Method: HTTP_Methods.get, pathTemplate: "/" },
async handler(request: Request, response: Response): Promise<void> {
return response.submitWithSuccess({ HTML_Content: "<h1>Hello, world!</h1>" });
}
}
]
});
// ...
serverApplication.start();
関連型
Server.RawConfig
- IP_Address
- 日本語名
- IPアドレス
- 必須
- はい
- 型
- HTTP
- 日本語名
- HTTPプロトコル関連設定
- 必須
- いいえ
- 型
- HTTPS
- 日本語名
- HTTPSプロトコル関連設定
- 必須
- いいえ
- 型
オブジェクト型であり、エンジニアが意識してなければいけないものは必須プロパティに成っている様に設計された。
IP_Address
- 日本語名
- IPアドレス
- 必須
- はい
- 型
飛んでくるHTTPリクエストの受付が行われる妥当なIPアドレスを含まなければいけない必須 プロパティ。 単一のリクエストハンドラ及びHTTPSプロトコル対応無しの一番簡単な 例だと、下記の様に成る。
import { Server, Request, Response, ProtocolDependentDefaultPorts } from "@yamato-daiwa/backend";
import { HTTP_Methods } from "@yamato-daiwa/es-extensions";
Server.initializeAndStart({
IP_Address: "127.0.0.1",
HTTP: { port: ProtocolDependentDefaultPorts.HTTP },
routing: [
{
route: { HTTP_Method: HTTP_Methods.get, pathTemplate: "/" },
async handler(request: Request, response: Response): Promise<void> {
return response.submitWithSuccess({ HTML_Content: "<h1>Hello, world!</h1>" });
}
}
]
});
HTTP
- 日本語名
- HTTPプロトコル関連設定
- 必須
- いいえ
- 型
- port
- 日本語名
- ポート番号
- 必須
- はい
- 型
- number
HTTPプロトコルを対応したい場合、当設定の群を指定する事。
現在、当設定群の単一の設定はHTTPポート番号(port
プロパティ)
である。
何方のポート番号でHTTPリクエストが聞かれる事に成るか、エンジニアに意識させる為に必須にされた。
HTTPプロトコルにとって規定のポート番号で良い場合、
ProtocolDependentDefaultPorts
列挙を使うと良い。
import { Server, Request, Response, ProtocolDependentDefaultPorts } from "@yamato-daiwa/backend";
import { HTTP_Methods } from "@yamato-daiwa/es-extensions";
Server.initializeAndStart({
IP_Address: "127.0.0.1",
HTTP: { port: ProtocolDependentDefaultPorts.HTTP },
routing: [
{
route: { HTTP_Method: HTTP_Methods.get, pathTemplate: "/" },
async handler(request: Request, response: Response): Promise<void> {
return response.submitWithSuccess({ HTML_Content: "<h1>Hello, world!</h1>" });
}
}
]
});
HTTPS
- 日本語名
- HTTPSプロトコル関連設定
- 必須
- いいえ
- 型
- port
- 日本語名
- ポート番号
- 必須
- はい
- 型
- number
- SSL_KeyFileRelativeOrAbsolutePath
- 日本語名
- SLLキーへのパス(絶対か相対)
- いつ必要
- 「SSL_Key」プロパティが指定されなかった
- 型
- string
- SSL_Key
- 日本語名
- SLL証明書
- 必須
- いいえ
- 型
- string
- SSL_CertificateFileRelativeOrAbsolutePath
- 日本語名
- SLL証明書へのパス(絶対か相対)
- いつ必要
- 「SSL_Certificate」プロパティが指定されなかった
- 型
- string
- SSL_Certificate
- 日本語名
- SLLキー
- 必須
- いいえ
- 型
- string
HTTPSプロトコルを対応したい場合、当設定の群を指定する事。 現在のセキュリティの要件に依ると、此のプロトコルこそ利用するべき。
現在は5件の項目が有り、これ等の中に非相互的な2組みが有る。 HTTPSポート番号と他に、SSL証明書・SSLキー(ファイルの相対パスか、もっと安全である絶対パス、 若しくはSSL証明書・SSLキーを代表している文字列)を指定 しなければいけない。 下記、それぞれの場合にとって簡単な例を提供。
import { Server, Request, Response, ProtocolDependentDefaultPorts } from "@yamato-daiwa/backend";
import { HTTP_Methods } from "@yamato-daiwa/es-extensions";
import Path from "path";
Server.initializeAndStart({
IP_Address: "127.0.0.1",
HTTPS: {
port: ProtocolDependentDefaultPorts.HTTPS,
SSL_CertificateFileRelativeOrAbsolutePath: Path.resolve(__dirname, "./SSL/SSL_Certificate.pem"),
SSL_KeyFileRelativeOrAbsolutePath: Path.resolve(__dirname, "./SSL/SSL_Key.pem")
},
routing: [
{
route: { HTTP_Method: HTTP_Methods.get, pathTemplate: "/" },
async handler(_request: Request, response: Response): Promise<void> {
return response.submitWithSuccess({ HTML_Content: "<h1>Hello, world!</h1>" });
}
}
]
});
import { Server, Request, Response, ProtocolDependentDefaultPorts } from "@yamato-daiwa/backend";
import { HTTP_Methods } from "@yamato-daiwa/es-extensions";
import Path from "path";
import { secrets } from "docker-secret";
Server.initializeAndStart({
IP_Address: "127.0.0.1",
HTTPS: {
port: ProtocolDependentDefaultPorts.HTTPS,
SSL_Key: secrets.SSL_KEY,
SSL_Certificate: secrets.SSL_CERTIFICATE
},
routing: [
{
route: { HTTP_Method: HTTP_Methods.get, pathTemplate: "/" },
async handler(_request: Request, response: Response): Promise<void> {
return response.submitWithSuccess({ HTML_Content: "<h1>Hello, world!</h1>" });
}
}
]
});
SSLキー且つSSL証明書は勿論、事前に用意しておく必要が有る。