MocoはMockServerのクイックスタートとして


Moco探索


mocoって何?


シミュレーションサーバを簡単に構築するライブラリortools.
https://github.com/dreamhead/moco

mocoインストール構成


1、jarをダウンロードする

https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/0.11.0/moco-runner-0.11.0-standalone.jar

2、コンパイル運転

  • java環境変数
  • の構成
  • Gradle(ref:http://www.gradle.org)
  • ソースコードを取得します.https://github.com/dreamhead/moco
  • コードディレクトリにアクセス、./gradle build
  • json
    [ { "response" : { "text" : "Hello, Moco" } } ]
    
  • を書く
  • それからjsonを書いてから
    java -jar moco-runner--standalone.jar start -p 12306 -c foo.json
    
  • を起動することができます.
    そしてhttp://localhost:12306訪問しました

    3、進級


    3.1 Content

  • requestコンテンツに従ってresponse
    [{
      "request" :
        {
          "text" : "foo"
        },
      "response" :
        {
          "text" : "bar"
        }
    }]
    
    アクセスを返します.http://localhost:12306
  • requestの内容が多すぎる場合は、1つのファイルに入れることができます
    {
      "request" :
        {
          "file" : "foo.request"
        },
      "response" :
        {
          "text" : "bar"
        }
    }
    
  • 3.2プロファイル


    PS:Mocoはプロファイルの動的ロードをサポートしているので、プロファイルを変更しても追加してもサービスを再起動する必要はありません.
    Mocoは、グローバルなプロファイルに他のプロファイルを導入することをサポートします.これにより、サービス定義プロファイルを分割できます.
    例えば、2つのプロジェクトBoyとGirlプロジェクトが同じMock Serverを使用する必要がある場合は、boyをそれぞれ定義することができます.jsonとgirl.jsonプロファイルをグローバルファイルに導入します.グローバル構成は次のとおりです.
    [ { "context": "/boy", "include": "boy.json" }, { "context": "/girl", "include": "girl.json" } ]
    

    ここにいるよjsonとgirl.jsonでは、次のように定義されます.
    //boy
    [ { "request" : { "uri" : "/hello" }, "response" : { "text" : "I am a boy." } } ]
    //girl
    [ { "request" : { "uri" : "/hello" }, "response" : { "text" : "I am a girl." } } ]
    

    この場合、パラメータ-gでグローバルプロファイルをロードする必要があります(-gは3.1 context章でのみ使用されます)
    java -jar moco-runner--standalone.jar start -p 12306 -g onecoder.json
    

    起動に成功した後、私たちはそれぞれhttp://localhost:12306/girl/helloおよびhttp://localhost:12306/boy/helloサービスにアクセスすると、対応するreponse結果が得られます.実はグローバルファイルの導入方式には直接includeなどがありますが、OneCoderはcontextという方式がよく使われるべきだと思っています.
    Requestパラメータ
    requestには自然にパラメータ付きのものが多く、以下のように構成されています.
    [{ "request" : { "uri" : "/getBoy", "queries": { "name":"onecoder" } }, "response" : { "text" : "Hey." } }]
    

    上記の構成が一致するurlは、次のとおりです.http://localhost:12306/getBoy?name=onecoderを選択します.つまり、この方法では、開発期間中に一定のテストパラメータとパラメータ値が必要です.
    restスタイルurlの場合、Mocoは正規マッチングをサポートします.
    [{ "request": { "uri": { "match": "/searchboy/\\w+" } }, "response": { "text": "Find a boy." } }]
    

    この時点で、アクセスhttp://localhost:12306/searchboy/*末尾にパラメータを追加しても一致します.
    Getのほか、Post、Put、Deleteなどのリクエストモードは自然にサポートされています.
    [{
      "request" :
        {
          "method" : "post",
          "forms" :
            {
              "name" : "onecoder"
            }
        },
      "response" : 
        {
          "text" : "Hi."
        }}]
    

    Header、Cookiesなどのリクエスト情報の構成もサポートされています.

    3.3 template


    0.8バージョンから、Mocoはtemplate機能を提供し、いくつかのパラメータ値を動的に返すことができます.例:
    [
        {
        "request": {
                 "uri": "/template"
                       },
        "response": {
               "text": {
                   "template": "${req.queries['name']}"
                   }
                         }
            }
    ]
    

    urlを使用します.http://localhost:12306/template?name=onecoderアクセスするとonecoderが返されます.これによりtemplateという方法で柔軟にいくつかの値を返すことができます.

    3.4 redirect

    [{ "request" : { "uri" : "/redirect" }, "redirectTo" : "http://www.coderli.com" }]
    

    3.5 Asynchronous

    [
        "request":{
            "uri":"/event"
        },
        "response":{
            "text":"event"
        },
        "on":{
            "complete":{
                "async":"true",
                "post":{
                    "url":"http://another_siter",
                    "content":"cintent"
                }
            }
        }
    ] 
    

    これにより、/eventへのアクセスは非同期になります.正しいまで待たなければならないhttp://another_siterアクセスが完了すると、結果はresponseに格納されます.

    ヘルプWebサイト


    https://github.com/dreamhead/moco/blob/master/moco-doc/socket-apis.md https://github.com/dreamhead/moco/blob/master/moco-doc/rest-apis.md https://github.com/dreamhead/moco/blob/master/moco-doc/apis.md