Versão Moco 1.5.0, servidor simulado

Tenho o prazer de anunciar que o Moco 1.5.0 foi lançado oficialmente.

O que é Mocó?

Moco é uma biblioteca de estrutura/ferramenta/programa que pode facilmente construir um servidor simulado.

habilidade principal

Moco pode suportar convenientemente a construção de servidores de simulação HTTP.

  • Conforme necessário, combine a resposta com a solicitação, retorne a resposta correspondente e configure informações como versão HTTP, conteúdo e cabeçalhos HTTP.
  • Simule cenários especiais do servidor, por exemplo, resposta lenta.
  • Encaminhará solicitações para servidores remotos, isolando servidores instáveis.
  • Chamado de forma assíncrona após receber uma solicitação, simulando o cenário de uma solicitação HTTP multinível.
  • Ele é usado em cenários de teste de unidade para verificar o status da solicitação e verificar detalhes.
  • Fornece a capacidade de montar arquivos para facilitar o desenvolvimento front-end.

Para API mais detalhada, consulte API .

Para mais métodos de uso, consulte uso .

Atualizações da versão anterior: Moco 1.4.0 , Moco 1.3.0

mudança de versão

Na versão 1.5.0, as seguintes novas APIs foram adicionadas:

  • Na resposta de resposta, adicione corssuporte ao CORS, a seguir está a API correspondente para configuração do CORS:
    • allowOrigin( Acesso-Controle-Permitir-Credenciais )
    • allowCredentials( Acesso-Controle-Permitir-Credenciais )
    • exposeHeaders( Cabeçalhos de controle de acesso-exposição )
    • maxAge( Acesso-Controle-Max-Age )
    • allowMethods( Métodos de controle de acesso-permissão )
    • allowHeaders( Acesso-Controle-Permitir-Cabeçalhos )
  • No modelo, é adicionado para req.client.portsuportar a obtenção de informações da porta de conexão do cliente
  • No Cookie, é adicionado sameSitepara configurar o atributo SameSite

CORS

Uma das maiores adições no 1.5.0 é o suporte para CORS. O acesso entre domínios é um problema comum no desenvolvimento de software, portanto, o servidor geralmente precisa configurar o suporte para CORS (compartilhamento de recursos de origem cruzada). corsPodemos definir o suporte do servidor para CORS configurando na resposta .

Configurações padrão do CORS

A maneira mais fácil de usar o CORS é oferecer suporte ao CORS por padrão, ou seja, permitir todo o acesso entre origens. Neste momento, não precisamos configurar nenhuma informação, apenas configurá-la na resposta cors.

  • API Java
server.response(cors());
  • API JSON
{
  "response" :
    {
      "cors" : true
    }
}

Por padrão, o Moco definirá cabeçalhos HTTP comuns para suportar CORS, como:

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: *
Access-Control-Allow-Headers: *

permitirOrigem/Access-Control-Allow-Origin

No CORS, definindo o cabeçalho Access-Control-Allow-Origin , podemos restringir quais nomes de domínio podem ser acessados ​​entre domínios. Através de allowOrigin, podemos definir o cabeçalho HTTP Access-Control-Allow-Origin , como:

  • API Java
server.response(cors(allowOrigin("https://www.github.com/")));
  • API JSON
{
  "response" :
    {
      "cors" :
        {
          "allowOrigin" : "https://www.github.com/"
        }
    }
}

Se solicitações de todos os domínios forem permitidas, podemos allowOrigindefinir o valor como *.

Na API JSON, também podemos definir Access-Control-Allow-Origin diretamente .

  • JSON
{
  "response" :
    {
      "cors" :
        {
          "Access-Control-Allow-Origin" : "https://www.github.com"
        }
    }
}

permitirMethods/Access-Control-Allow-Methods

No CORS, definindo o cabeçalho Access-Control-Allow-Methods , podemos restringir quais métodos HTTP podem ser acessados ​​entre domínios. Através de allowMethods, podemos definir o cabeçalho HTTP Access-Control-Allow-Methods, como:

  • API Java
server.response(cors(allowMethods("GET", "PUT")));
server.response(cors(allowMethods(HttpMethod.GET, HttpMethod.PUT)));

Na API Java, você pode configurá-lo diretamente com uma string ou usar a enumeração HttpMethod.

  • JSON
{
  "response" :
    {
      "cors" :
        {
          "allowMethods" : ["GET", "PUT"],
        }
    }
}

Se todos os métodos HTTP forem permitidos, podemos allowMethodsdefinir o valor de como *.

Na API JSON, também podemos definir Access-Control-Allow-Methods diretamente .

  • JSON
{
  "response" :
    {
      "cors" :
        {
          "Access-Control-Allow-Methods" : ["GET", "PUT"]
        }
    }
}

permitirHeaders/Access-Control-Allow-Headers

No CORS, o cabeçalho Access-Control-Allow-Headers representa todos os campos de informações do cabeçalho suportados pelo servidor. Através de allowHeaders, podemos definir o cabeçalho HTTP Access-Control-Allow-Headers , como:

  • API Java
server.response(cors(allowHeaders("X-Header", "Y-Header")));
  • JSON
{
  "response" :
    {
      "cors" :
        {
          "allowHeaders" : ["X-Header", "Y-Header"]
        }
    }
}

Se todos os cabeçalhos HTTP forem suportados, podemos allowHeadersdefinir o valor como *.

Na API JSON, também podemos definir Access-Control-Allow-Headers diretamente .

{
  "response" :
    {
      "cors" :
        {
          "Access-Control-Allow-Headers" : ["X-Header", "Y-Header"]
        }
    }
}

maxAge/Controle de acesso-Max-Age

No CORS, o cabeçalho Access-Control-Max-Age indica o período de validade da solicitação de comprovação. Através de maxAge, podemos definir o cabeçalho HTTP Access-Control-Max-Age, aqui precisamos definir o horário e sua unidade, por exemplo:

  • API Java
server.response(cors(maxAge(1728000, TimeUnit.SECONDS)));
  • JSON
{
  "response" :
    {
      "cors" :
        {
          "maxAge": {
            "duration": 1728000,
            "unit": "second"
          }
        }
    }
}

Na API JSON, também podemos definir Access-Control-Max-Age diretamente .

{
  "response" :
    {
      "cors" :
        {
          "Access-Control-Max-Age" : {
            "duration": 1728000,
            "unit": "second"
          }
        }
    }
}

permitirCredenciais/Access-Control-Allow-Credential

No CORS, o cabeçalho Access-Control-Allow-Credential indica se é permitido o envio de Cookie. Através de allowCredentials, podemos definir o cabeçalho HTTP Access-Control-Allow-Credential , como:

  • API Java
server.response(cors(allowCredentials(true)));
  • JSON
{
  "response" :
    {
      "cors" :
        {
          "allowCredentials" : true
        }
    }
}

Na API JSON, também podemos definir Access-Control-Allow-Credentials diretamente .

{
  "response" :
    {
      "cors" :
        {
          "Access-Control-Allow-Credentials" : true
        }
    }
}

exporHeaders/Access-Control-Expose-Headers

No CORS, Access-Control-Expose-Headers especifica as informações do cabeçalho HTTP que o navegador pode obter através do método XMLHttpRequestdo objeto . getResponseHeader()Através de exposeHeaders, podemos definir o cabeçalho HTTP Access-Control-Expose-Headers , como:

  • API Java
server.response(cors(exposeHeaders("X-Header", "Y-Header")));
  • JSON
{
  "response" :
    {
      "cors" :
        {
          "exposeHeaders" : ["X-Header", "Y-Header"]
        }
    }
}

Na API JSON, também podemos definir Access-Control-Expose-Headers diretamente .

{
  "response" :
    {
      "cors" :
        {
          "Access-Control-Expose-Headers" : ["X-Header", "Y-Header"]
        }
    }
}

req.client.port

req.client.portFornece a capacidade de acessar portas de conexão do cliente em modelos.

  • API Java
server.request(by(uri("/template"))).response(template("${req.client.port}"));
  • API JSON
{
  "request": {
    "uri": "/template"
  },
  "response": {
    "text": {
      "template": "${req.client.port}"
    }
  }
}

mesmoSite

Comparado com os atributos de cookie originais, SameSite é um atributo de cookie adicionado posteriormente para evitar ataques CSRF e rastreamento de usuários. sameSiteA API nos permite definir o atributo SameSite para cookies.

  • API Java
server.response(cookie("loggedIn", "true", sameSite("NONE")), status(302));
server.response(cookie("loggedIn", "true", sameSite(CookieAttribute.SameSite.NONE)), status(302));

sameSiteVários valores de STRICT , LAX e NONE são suportados . Na API Java, você pode configurá-lo diretamente com uma string ou usar a enumeração de CookieAttribute.SameSite .

  • API JSON
{
  "request": {
    "uri": "/cookie-with-same-site"
  },
  "response": {
    "cookies": {
      "login": {
        "value": "true",
        "sameSite": "Lax"
      }
    }
  }
}

Bem-vindo à versão 1.5.0 e experimente os recursos mais recentes do Moco!

Guess you like

Origin www.oschina.net/news/256572/moco-1-5-0-released