Help us understand the problem. What is going on with this article?

LoopbackのRESTサービスを公開しない(一部使用できない)ようにする

More than 5 years have passed since last update.

こちらの記事で、Loopbackを使ったRESTfulなWebサービスをさくっと作ってみたのですが、
正直こんなにいらない、公開したくないというケースはあるはず。

不要なサービスを塞ぐ方法をメモ。

自動生成によって作成されたスクリプト(Remind)

Yoemonでモデルを作成した際に、モデル定義のJSONファイルと、
下記のスクリプトファイルが出来上がる。

sample-model.js
module.exports = function(SampleModel) {

};

塞ぎの制御ではスクリプトファイルを変更する

塞ぎ定義を追加する

Model.disableRemoteMethod(name, isStatic)

塞ぎの定義はModel.disableRemoteMethod(name, isStatic)を使用する。
詳しくはAPIドキュメントで確認していただくとして、
概要としては下記のようなもの。

  • name :メソッド名
  • isStatic :staticなメソッドかどうか(staticならtrue)

「staticなメソッドかどうか」ってどういうことだ!というところですが、
PersistedModelのstaticメソッドかどうかという話のようです。
モデル間のリレーション関係などは除いて、モデル単体でデフォルトで作成されてくるREST APIのメソッドは
すべて「static」ということで問題ありません。
(リレーションがある場合のものは別に整理することにしよう。忘れないように。)

2015/05/13追記:
こちらにリレーション関係のmethodのリストがあったのでメモ。

実際の塞ぎ

例えば、HTTP POSTで投げたときに使われる「create」を塞ぐ場合は下記のとおり。

sample-model.js
module.exports = function(SampleModel) {

  SampleModel.disableRemoteMethod('create', true);
};

この定義を加えた上で、Nodeアプリケーションを再起動して、
explorer(Express画面)を確認すると、1行消えている。

AFTER
after.png

BEFORE
before.png

こんな感じで、使いたいものだけを残すのも簡単にできるのでした。

yosi-q
インド資本の入った米国クラウドコンサルティングファームの東京オフィスに所属し、山形県鶴岡市からリモートワークしながら、ちょっとしたwonder探ししてます。 Qiitaは記録も含めてやったことをちょこちょこ残しています。 ここで記載した記事は私感や私自身の実施した内容の記録として記載しており、所属する組織とは関係ありません。
http://yosi-q.me
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away