代替バックエンドとしてのparseサーバの設定


時々、我々は地面から本格的なバックエンドを開発するのが不可能であるとき、状況に遭遇します.そのような状況では、開発をスピードアップするようなサービスに頼ります.
parseはサービス(MBAAS)プラットフォームとしてのオープンソースモバイルバックエンドです.以前は、parseはFireBaseに似たバックエンドプラットフォームでした.2016年に、フェイスブックは、プラットホームコードをオープンして、彼らのホスティングサービスをsunsettedしました.この記事では、解析を簡単に見て、どのようにアプリケーションをすばやく展開できるかを見ていきます.

概要


Parse REST APIとGraphqlをサポートし、本格的なバックエンドです.それはオープンソースであり、活発にコミュニティによって維持されています.
それは、IOS、Android、JavaScript、および他のプラットフォームで利用可能なSDKを持っているだけでなく、キャンペーンを含むプッシュ通知のサポート、ボックスのユーザー管理、サポートのためのOAuth providers (フェイスブック、ツイッター、グーグル、ギタブ、LDAPなど)、Dockerのサポート、様々な展開オプションplatforms (AWSとHerokuを含む)だけでなく、さまざまなストレージアダプタのサポート.
parseはwebhook , job , configで拡張可能です.あなたはExpressと一緒に使用することができます.js

パースの設定


parseは、ノード8 +、mongodb、postgresqlを設定する必要があります.Unixライクなシステムでは、ノードにNVMを使うことをお勧めします.JSインストール.手順は次のとおりです.
npm install -g parse-server mongodb-runner
mongodb-runner start
parse-server --appId APPLICATION_ID --masterKey MASTER_KEY --databaseURI mongodb://localhost/test
Dockerを使用して解析を開始することもできます.
git clone https://github.com/parse-community/parse-server
cd parse-server
docker build --tag parse-server .
docker run --name my-mongo -d mongo
docker run --name my-parse-server -v cloud-code-vol:/parse-server/cloud -v config-vol:/parse-server/config -p 1337:1337 --link my-mongo:mongo -d parse-server --appId APPLICATION_ID --masterKey MASTER_KEY --databaseURI mongodb://mongo/test
APPLICATION_ID はアプリケーションの名前であり、ユーザが生成することができます.MASTER_KEY はすべてのパーミッションを上書きできるキーです.その他のパラメータは以下の通りです.
  • databaseURI : MongoDBの接続文字列URI.
  • cloud : あなたのアプリケーションのクラウドコードへのパス.
  • appId : あなたのアプリケーションのユニークな識別子.
  • fileKey : ファイル記憶に使用される接頭辞を指定するキー.移行されたアプリケーションの場合、これはparse上ですでにホストされているファイルへのアクセスを提供するために必要です.
  • masterKey : すべてのパーミッションを上書きするキー.秘密を守りなさい.
  • clientKey : あなたのアプリケーションのクライアントキー.(オプション)
  • restAPIKey : あなたのアプリケーションの残りのAPIキー.(オプション)
  • javascriptKey : あなたのアプリケーションのJavaScriptキー.(オプション)
  • dotNetKey : .あなたのアプリケーションのためのネットキー.(オプション)
  • push : プッシュ構成を含むオブジェクト.プッシュ参照
  • filesAdapter : ファイルアダプタインターフェイスを実装するオブジェクトです.例えば、S 3ファイルアダプタ
  • auth : サードパーティ認証のサポートを構成します.
  • maxUploadSize : 最大ファイルアップロードサイズ.
  • そして、それ!我々はparseバックエンドを正常に数分で実行している.
    便利にするために、Parseダッシュボード- Parse Server用のVisual Adminパネルをインストールできます.走るparse-dashboard , グローバルにインストールする必要があります.
    npm -i g parse-dashboard
    
    parse-dashboard --dev --appId APPLICATION_ID --masterKey MASTER_KEY --serverURL "http://localhost:1337/parse/" --appName SimpleFileStorage
    
    ダッシュボードにアクセスできますlocalhost:4040 . このチュートリアルでは、残りのAPIを使用します.

    バックエンド機能


    データの保存


    前述のように、Parseはデータを簡単に保存することができます.すべてのデータの基本単位はオブジェクトAPIです.たとえば、キークラスのメーカーとモデルを使用して車両クラスを定義する場合、単純なcurlリクエストを使用してCRUD REST操作を実行できます.
    curl -X POST \
      -H "X-Parse-Application-Id: simple_file_storage" \
      -H "X-Parse-REST-API-Key: ${REST_API_KEY}" \
      -H "Content-Type: application/json" \
      -d '{"manufacturer": "Lamborghini", "model":  "Gallardo"}' \
      http://localhost:1337/parse/classes/vehicle
    
    
    我々は得るobjectId and created _date 応えて.オブジェクトの更なる操作は、使用することができますobjectid .
    curl -X GET \
      -H "X-Parse-Application-Id: simple_file_storage" \
      -H "X-Parse-REST-API-Key: ${REST_API_KEY}" \
      -H "Content-Type: application/json" \
      http://localhost:1337/parse/classes/vehicle/objectId
    
    curl -X PUT \
      -H "X-Parse-Application-Id: simple_file_storage" \
      -H "X-Parse-REST-API-Key: ${REST_API_KEY}" \
      -H "Content-Type: application/json" \
      -d '{"manufacturer": "Lamborghini", "model":  "Murcielago"}' \
      http://localhost:1337/parse/classes/vehicle/objectId
    
    curl -X DELETE \
      -H "X-Parse-Application-Id: simple_file_storage" \
      -H "X-Parse-REST-API-Key: ${REST_API_KEY}" \
      http://localhost:1337/parse/classes/objectId
    
    
    クラスが定義されていない場合は、サーバーによって作成されます.Parseダッシュボードを使用してカスタムクラスを作成できます.データ型に関する限り、parseは文字列、数字、Boolean、配列、JSONオブジェクト、日付時刻、ファイル、およびNULLをサポートしています.さらに、parseは2つのカスタムデータ型、もう一つの解析オブジェクトへのポインタと他のparseクラスへの関係を持ちます.parseのデータ型はロックされます.データ型が設定されると、何かを保存しようとするとエラーが返されます.

    ファイル


    データと同様に、ファイルのアップロードは簡単です.ファイルURLは/files ルートとファイル名.
    しかし、手動でコンテンツタイプを処理する必要があります.
    curl -X POST \
      -H "X-Parse-Application-Id: simple_file_storage" \
      -H "X-Parse-REST-API-Key: REST_API_KEY" \
      -H "Content-Type: image/jpeg" \
      --data-binary '@myPicture.jpg' \
      http://localhost:1337/parse/files/pic.jpg
    
    レスポンスとして、保存されたファイルのファイルの場所と名前を受け取ります.ファイル名に一意の識別子が追加されます.
    {
      "url": "http://localhost:1337/parse/files/simple_file_storage/d840137c22d89d126075ec7fa875c54f_pic.jpg",
      "name": "d840137c22d89d126075ec7fa875c54f_pic.jpg"
    }
    
    

    認証とセキュリティ


    parseはボックスユーザ認証を提供します.これは、トークンベースの認証、ログイン、ログイン、電子メールの検証、リセットパスワード、トークンベースのセッション管理、およびロールベースのアクセス管理のようなユーザーアクションが含まれます.利用者の経路は/parse/users , 役割のルートは/parse/roles とセッションのルートは/parse/sessions .
    データを確保するために、parseはクラスレベルの許可(CLP)とアクセス制御リスト(ACL)を提供します.CLPはロールへのデータアクセスに対して細かい制御を提供します.クラスレベルのパーミッションを使用すると、ロールを定義できます.
  • 新しいクラスを作成する
  • クラスにフィールドを追加する
  • クラスからデータを読み込むか、問い合わせる
  • さらに、ACLSを使用すると、個人やロールにオブジェクトへのアクセスを制限できます.ACLの例は次のようになります.
    {
      classLevelPermissions:
      {
        "find": {
          "requiresAuthentication": true,
          "role:admin": true
        },
        "get": {
          "requiresAuthentication": true,
          "role:admin": true
        },
        "create": { "role:admin": true },
        "update": { "role:admin": true },
        "delete": { "role:admin": true }
      }
    }
    
    この特定のオブジェクト
  • お客様には近づきません
  • 認証を必要とします.
  • は定義済みロール管理者を持ち、すべての操作を行うことができます.
  • 下の写真は、パースドキュメントから、CLPSとACLの相互作用を示します.

    雑多な特徴

  • クラウド関数は、parseバックエンドでカスタム関数を定義することを可能にします.
  • フックは、他の言語でカスタムコードを実行し、サーバー側のロジックを拡張できます.
  • ジョブは、私たちが応答を待つ必要がないように、長期にわたる機能を実行するのを許します.
  • トリガは、データが変更される前/後にカスタムコードを記述できます.
  • Analyticsは我々のアプリケーションに寸法とメトリックを追加することができます.
  • プッシュダッシュボードは、私たちの携帯アプリのカスタムプッシュキャンペーンを作成することができます.
  • ジオポイントは、オブジェクトと現実世界の緯度と縦を関連付けることができます.
  • config configパラメータを保存します.
  • チェゼルとパース監査役とのパース拡張


    チゼルCMS


    Chisel Parseに組み込まれたAPI最初のヘッドレスCMSです.parse上でのchiselの設定はとても簡単です.
    npm install -g chisel-cms
    chisel-cms --appId "APP_ID" --serverURL "https://YOURSERVER.com/parse"
    
    チゼルが始まるlocalhost:9000 .
    Chiselは複数のサイトを設定できる管理パネルを提供します.その上、独自のParse server . 任意の解析サーバーでChiselを実行することができますが、Chiselのサーバーは、ブログや知識ベースのような便利なテンプレートを持っています.
    をチェックすることは賢明ですdata structures and content publishing ダイビング前のライフサイクル.

    監査役を務める


    Parse auditor Enversプロジェクトに触発されたモジュールです.これは自動化されたデータの追跡/クラスに監査を追加します.これはアプリケーションがHIPAAのような規則を遵守するために必要なときに便利です.監査役を解析しなければなりません.パース監査役がどのように働くかを見てみましょう
    我々には仮定しましょうImportantData and SortOfImportanData 解析のクラス.我々は両方のクラスのデータの変更を追跡し、知っているImportantData がアクセスされた.
    監査役を設定するには、クラウドコードを編集する必要があります.まず、Parseサーバーとダッシュボードの実行中のインスタンスをシャットダウンします.次に、parseインストールのクラウドフォルダに移動します.クラウド・フォルダがなければmain.js クラウドフォルダ内のファイル.クラウドフォルダーの絶対パスが必要です.次のようになります.
    C:\somefolder\Parse\cloud\main.js
    
    クラウドフォルダの中にparse-auditor の依存package.json
    {
      "dependencies": {
        "parse-auditor": "*"
      }
    }
    
    
    さて、main.js ファイルは次のようになります.
    const ParseAuditor = require('parse-auditor');
    ParseAuditor(['ImportantData', 'SortOfImportantData'],['ImportantData'])
    
    最初のparamはクラス名の配列をとり、それらを別々に追跡しますClass_AUD クラス.番目のparamは、クラス名の配列とClass_AUD クラス.
    デフォルトではImportantData and SortOfImportantData で追跡されますImportantData_AUD and SortOfImportantData_AUD . イメージImportantData で追跡されますSortOfImportantData_AUD . 監査ログには4つの追加フィールドが付属しています.
  • メタアンサー俳優:このイベントに関係するユーザー.更新をしたユーザーか、このレコードを見た人.
  • メタノーアクション:“保存”、“削除”、または“検索”ユーザーが撮影したアクションに応じてされます.
  • メタウインクラス:クラスの名前は、多くのクラス間で複雑な監査履歴を組み合わせるときに便利です.
  • メタリック件名:編集/閲覧されている行.
  • プラグインはさらにこれらのフィールドを使用して設定できます.
    {
        classPrefix: '', //Class Prefix
        classPostfix: '_AUD', //Class Postfix
        fieldPrefix: 'meta_', //field Postfix
        fieldPostfix: '', // field Postfix
        parseSDK: Parse, //SDK Object
        useMasterKey: false, //MasterKey
        clp: {} //Class Level Permissions 
    }
    
    以下の例を考えてください.
    const ParseAuditor = require('parse-auditor');
    const customConfig = { classPostfix: '_LOGS' };
    ParseAuditor(['ImportantData', 'SortOfImportantData'], ['ImportantData'], customConfig);
    
    これは、データをログログで満たされたクラスにログ出力します.サーバーを起動するにはmain.js 以下のように、クラウド・パームに.
    parse-server --appId APPLICATION_ID --masterKey MASTER_KEY --databaseURI mongodb://localhost/test --cloud "C:\somefolder\Parse\cloud\main.js"
    
    これにより、カスタムロギングでパースを設定できました.

    最後の思考


    この記事では、我々はすぐにParseを使用してアプリケーションのバックエンドを生成する方法を見てきました.
    パーミッションをどのように扱うか、どのようにデータを確保するかをカバーしています.また、我々はパースで使用できる2つの便利なツールをカバーしている:チゼルCMSとパース監査役.