Blockletはインターフェースを介して外部と対話し、サービスを介して強力で再利用可能な機能で強化されます。blocklet.ymlのinterfacesプロパティは、アプリケーションのウェブページ、API、およびその他のエンドポイントを公開するための基礎です。組み込みの認証サービスなどのサービスは、これらのインターフェースにアタッチして、余分な定型コードなしで共通の機能を提供できます。
このセクションでは、両方の設定方法を詳しく説明し、Blockletの明確なエントリポイントを定義し、より広範なエコシステムにシームレスに統合できるようにします。
インターフェース
interfaces配列は、Blockletのすべての公開エントリポイントを定義します。配列内の各オブジェクトは単一のインターフェースを表し、そのタイプ、場所、および動作を指定します。
インターフェーススキーマ
各インターフェースオブジェクトは、次のプロパティによって定義されます:
- type
string(required) — インターフェースのタイプ。有効な値には、web、well-known、api、healthなどがあります。Blockletはwebインターフェースを1つしか宣言できません。 - name
string(required) — インターフェースの一意で人間が読める名前(例:publicUrl、adminApi)。 - path
string(default:/) — このインターフェースを提供するBlocklet内の内部パス。 - prefix
string(default:*) — このインターフェースが公開されるパスプレフィックス。値が*(BLOCKLET_DYNAMIC_PATH_PREFIX)の場合、ユーザーは任意のパスにマウントできます。 - protocol
string(default:http) — 通信プロトコル。有効な値はhttp、https、tcp、udpです。 - port
string | object(default:PORT) — ポートマッピングを定義します。環境変数を参照する文字列(例:PORT)にすることも、固定マッピングのためにinternal(環境変数名)とexternal(ポート番号)キーを持つオブジェクトにすることもできます。 - containerPort
number— コンテナ内のポート番号。 - hostIP
string— インターフェースをホストマシン上の特定のIPにバインドします。 - services
array(default:[]) — このインターフェースにアタッチするサービスのリスト。詳細は以下のサービスセクションを参照してください。 - endpoints
array(default:[]) — 検出可能性と相互作用のためのメタデータを持つ特定のAPIエンドポイントを定義します。 - cacheable
array(default:[]) — このインターフェース以下の相対パスのリストで、アップストリームサービスによってキャッシュ可能です。 - proxyBehavior
string(default:service) — リクエストがどのようにプロキシされるかを定義します。serviceはBlocklet Serverのサービスレイヤーを経由してルーティングし、directはそれをバイパスします。 - pageGroups
array(default:[]) — ページグループ識別子のリスト。
特別なインターフェースタイプ
web: これはBlockletの主要なユーザー向けインターフェースです。Blockletはwebタイプのインターフェースを最大で1つしか宣言できません。well-known: このタイプは、標準化されたリソース発見パス(例:/.well-known/did.json)用です。このタイプのインターフェースは、/.well-knownで始まるprefixを持つ必要があります。
例:インターフェースの定義
以下は、プライマリウェブインターフェースと別のAPIインターフェースの両方を定義するblocklet.ymlの例です。
blocklet.yml
name: my-awesome-app
did: z8iZpky2Vd3i2bE8z9f6c7g8h9j0k1m2n3p4q5r6s7t8u9v0w1x2y3z4a5b6c7d
version: 1.2.0
description: An awesome app with a web UI and an API.
interfaces:
# ユーザーがアクセス可能なメインのウェブインターフェース
- type: web
name: publicUrl
path: /
prefix: /
protocol: http
port: PORT
# 専用のAPIインターフェース
- type: api
name: dataApi
path: /api
prefix: /api
protocol: http
port: PORTサービス
サービスは、Blocklet Server環境によって提供される、事前に構築された設定可能な機能です。インターフェースのservices配列で宣言するだけで、認証、認可などの機能を追加するためにインターフェースにアタッチできます。
サービススキーマ
サービスオブジェクトには2つの主要なプロパティがあります:
- name
string(required) — アタッチするサービスの名前(例:auth)。 - config
object(default:{}) — そのサービスに固有の設定オブジェクト。
組み込みサービス:auth
authサービスは、Blockletのための完全なユーザー認証および認可ソリューションを提供します。ユーザーのログイン、プロファイル管理、およびアクセス制御を処理します。
authサービスの設定
authサービスを追加すると、configオブジェクトを使用してその動作をカスタマイズできます。利用可能なオプションは次のとおりです:
- whoCanAccess
string(default:all) — 誰がインターフェースにアクセスできるかを定義します。有効な値:owner(DID Spaceの所有者のみ)、invited(所有者と招待されたユーザー)、またはall(認証されたすべてのユーザー)。 - profileFields
array(default:["fullName", "email", "avatar"]) — ログイン時にアプリが要求するユーザープロファイル情報。有効なフィールドはfullName、email、avatar、およびphoneです。 - allowSwitchProfile
boolean(default:true) — ユーザーがアプリケーション内で異なるプロファイルを切り替えることができるかどうかを決定します。 - blockUnauthenticated
boolean(default:false) —trueの場合、サービスは認証されていないリクエストを自動的にブロックします。 - blockUnauthorized
boolean(default:false) — trueの場合、サービスはwhoCanAccessの基準を満たさない認証済みユーザーをブロックします。 - ignoreUrls
array(default:[]) — 認証チェックから除外すべきURLパスまたはパターンのリスト(例:/public/**)。
例:authサービスのアタッチ
この例は、前の例のwebインターフェースをauthサービスを使用して保護する方法を示しています。
blocklet.yml
interfaces:
- type: web
name: publicUrl
path: /
prefix: /
protocol: http
port: PORT
services:
- name: auth
config:
whoCanAccess: invited
blockUnauthenticated: true
profileFields:
- fullName
- email
ignoreUrls:
- /assets/**
- /loginこの設定では、ウェブインターフェース以下のすべてのパスは、/assets/**と/loginを除いて保護されます。DID Spaceの所有者と招待されたユーザーのみが、ログイン後に保護されたページにアクセスでき、フルネームとメールアドレスの共有を求められます。
エンドポイント
インターフェース内のendpoints配列により、APIエンドポイントを明示的に定義でき、検出可能性を高め、自動化された相互作用を可能にします。
エンドポイントスキーマ
- type
string(required) — エンドポイントタイプの一意の識別子。 - path
string(required) — インターフェースのパスに対するエンドポイントへの相対パス。 - meta
object— エンドポイントに関するメタデータを含むオブジェクト。- vcType
string— エンドポイントに関連付けられた検証可能な資格情報のタイプ。 - payable
boolean— エンドポイントが支払いを伴うかどうかを示します。 - params
array— エンドポイントが受け入れるパラメータを記述する配列。- name
string(required) — パラメータの名前。 - description
string(required) — パラメータの説明。
- name
- vcType
インターフェースとサービスを組み合わせることで、Blockletがどのように公開されるかを明確に定義し、強力な組み込み機能で保護することができます。複数のBlockletを組み合わせてより複雑なアプリケーションを構築する方法については、次のコンポジションに関するセクションを参照してください。