19
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

nem / symbolAdvent Calendar 2022

Day 16

RESTゲートウェイに任意のJSON拡張情報をもたせるnodeMetadata設定

Last updated at Posted at 2022-12-15

実は結構前に、ノード(RESTゲートウェイ)に自由なメッセージ領域をもたせられないか、という打診をしてみたところ、実装してくれていたのでした。

いままではfriendlyName領域がユーザーとして比較的自由な文字列でカスタムできる領域でしたが、このnodeMetadataによって、完全に自由な領域を設定することができます。

せっかく実装されたのに、RESTゲートウェイのDockerイメージがなかなか更新されなかったので、すっかり忘れていました。

今はもうリリースされているので、利用可能です。

どのRESTゲートウェイのバージョンから有効なのか、までは調べてませんが、
まぁノードを建てるような皆さんなら常に最新の状態にアップデートしてるから、大丈夫でしょう。

ちなみにこの記事ではRestのバージョンは2.4.2でした。
最新でない場合は、一応安全のためにも、早めにアップデートをしてくださいね。

どんなの?

例えば、こんな感じの設定をすると…。

"nodeMetadata": {
  "greeting": "こんにちは",
  "message": "テストメッセージだよ",
  "foo": {
    "bar": "ばー",
    "baz": {
      "greeting": "Hello!",
      "array": [
        1,
        2,
        3
      ]
    }
  }
}

スクリーンショット 2022-12-14 6.10.56.png

その値がそのまま反映されます。

なお、未設定の場合は何も返ってきません。

設定方法

symbol-bootstrapによって、構成ファイルを用意している場合は、target/gateways/rest-gateway/rest.jsonにファイルがあると思いますので、これを開きます。
(今後のバージョンアップや構成によっては異なる可能性があります。同じような内容または名前のファイルを探してください)

スクリーンショット 2022-12-14 6.24.11.png

位置はどこでもいいので、"nodeMetadata"というキーで、お好きにオブジェクトを書いてください。

書いたら、RESTサーバを再起動するだけです。

なお、JSONの形式ミスがあると、RESTサーバが立ち上がらなくなるので、気をつけてください。
ミスったら一旦止めて、記述を見直して、再起動すれば大丈夫です。

現状では、手動で設定する方法しか無いと思います。
Symbol-Bootstrapを使用している場合、アップデートコマンドによって吹き飛ぶと思います。
そのあたりは環境整備に期待してください。

人柱

試しに設定してもらったノードを掲載させてもらいます。

*内容はノードの持ち主によって変更されている場合があります。

コード

ルーティングはここで設定されています。

なお、RESTサーバのルーティングはこのファイルに集約されていると思われるので、ココを覗くと、アンドキュメンテッドなパスが見つかるかも。

nodeMetadataの設定サンプル。

"nodeMetadata": {
    "_info": "replace the body of this object with custom fields and objects to personalize your node"
}

テストコードを覗いてみると、オブジェクトのネストも考慮していることがわかります。

expect(mockServer.send.firstCall.args[0]).to.deep.equal({
    foo: 1234,
    bar: 'lorem ipsum',
    baz: { abc: 41, xyz: 82 }
});

用途

自由にjsonオブジェクトを公開できるので、使い方は自分たちで決めなければなりません。

例えば、第一階層でサービス名などの名前空間を区切り、第二階層で具体的な値を公開してみる、とか…。

"jp.sugoi-web-service": {
  "name": "ノード太郎",
  "twitter": "@node_tarou",
  "message": "維持がんばるぞい!"
}

と書いておくと、すごいウェブサービスのシステムがこの値をみて、何らかに利用するとか。

まぁ、いろいろと考えてみて、何かに利用してください(ぶん投げ

ブロックチェーンの話ではありませんが、ノード運用を楽しく、ノードに関するサービスの可能性が広がる話でした。

19
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?