Lanzamiento Moco 1.5.0, servidor simulado

Me complace anunciar que Moco 1.5.0 se lanzó oficialmente.

¿Qué es Moco?

Moco es un marco/herramienta/biblioteca de programas que puede construir fácilmente un servidor simulado.

habilidad principal

Moco puede soportar cómodamente la construcción de un servidor de simulación HTTP.

  • Según sea necesario, haga coincidir la respuesta con la solicitud, devuelva la respuesta correspondiente y configure información como la versión HTTP, el contenido y los encabezados HTTP.
  • Simule escenarios especiales del servidor, por ejemplo, respuesta lenta.
  • Reenviará solicitudes a servidores remotos, aislando servidores inestables.
  • Se llama de forma asincrónica después de recibir una solicitud, simulando el escenario de una solicitud HTTP multinivel.
  • Se utiliza en escenarios de prueba unitaria para verificar el estado de la solicitud y verificar los detalles.
  • Proporciona la capacidad de montar archivos para facilitar el desarrollo front-end.

Para obtener una API más detallada, consulte API .

Para conocer más métodos de uso, consulte uso .

Actualizaciones de versiones anteriores: Moco 1.4.0 , Moco 1.3.0

cambio de versión

En la versión 1.5.0, se agregaron las siguientes API nuevas:

  • En la respuesta, agregue corspara admitir CORS, la siguiente es la API correspondiente para la configuración de CORS:
    • allowOrigin( Acceso-Control-Permitir-Credenciales )
    • allowCredentials( Acceso-Control-Permitir-Credenciales )
    • exposeHeaders( Acceso-Control-Exponer-Encabezados )
    • maxAge( Acceso-Control-Max-Edad )
    • allowMethods( Acceso-Control-Permitir-Métodos )
    • allowHeaders( Acceso-Control-Permitir-Encabezados )
  • En la plantilla, se agrega para req.client.portadmitir la obtención de información del puerto de conexión del cliente.
  • En Cookie se agrega sameSitepara configurar el atributo SameSite

CORS

Una de las mayores incorporaciones en 1.5.0 es la compatibilidad con CORS. El acceso entre dominios es un problema común en el desarrollo de software, por lo que el servidor a menudo necesita configurar el soporte para CORS (intercambio de recursos entre orígenes). corsPodemos configurar el soporte del servidor para CORS configurando en la respuesta .

Configuración CORS predeterminada

La forma más sencilla de utilizar CORS es admitir CORS de forma predeterminada, es decir, permitir todo el acceso entre orígenes. En este momento, no necesitamos configurar ninguna información, solo configurarla en la respuesta cors.

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

De forma predeterminada, Moco establecerá encabezados HTTP comunes para admitir CORS, como por ejemplo:

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

permitirOrigin/Control-de-acceso-Permitir-Origin

En CORS, al configurar el encabezado Access-Control-Allow-Origin , podemos restringir a qué nombres de dominio se puede acceder entre dominios. A través de allowOrigin, podemos configurar el encabezado HTTP Access-Control-Allow-Origin , como por ejemplo:

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

Si se permiten solicitudes de todos los dominios, podemos allowOriginestablecer el valor de en *.

En JSON API, también podemos configurar Access-Control-Allow-Origin directamente .

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

enableMethods/Control-de-acceso-permitir-métodos

En CORS, al configurar el encabezado Access-Control-Allow-Methods , podemos restringir a qué métodos HTTP se puede acceder en todos los dominios. A través de allowMethods, podemos configurar el encabezado HTTP Access-Control-Allow-Methods, como por ejemplo:

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

En la API de Java, puede configurarlo directamente con una cadena o utilizar la enumeración HttpMethod.

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

Si todos los métodos HTTP están permitidos, podemos allowMethodsestablecer el valor de en *.

En JSON API, también podemos configurar Access-Control-Allow-Methods directamente .

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

permitirEncabezados/Control-de-Acceso-Permitir-Encabezados

En CORS, el encabezado Access-Control-Allow-Headers representa todos los campos de información del encabezado admitidos por el servidor. A través de allowHeaders, podemos configurar el encabezado HTTP Access-Control-Allow-Headers , como por ejemplo:

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

Si se admiten todos los encabezados HTTP, podemos allowHeadersestablecer el valor de en *.

En JSON API, también podemos configurar Access-Control-Allow-Headers directamente .

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

edad-max/Control-de-acceso-edad-max

En CORS, el encabezado Access-Control-Max-Age indica el período de validez de la solicitud de verificación previa. A través de maxAge, podemos configurar el encabezado HTTP Access-Control-Max-Age, aquí debemos configurar la hora y su unidad, por ejemplo:

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

En JSON API, también podemos configurar Access-Control-Max-Age directamente .

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

permitirCredenciales/Control-de-Acceso-Permitir-Credenciales

En CORS, el encabezado Access-Control-Allow-Credential indica si se permite el envío de cookies. A través de allowCredentials, podemos configurar el encabezado HTTP Access-Control-Allow-Credential , como por ejemplo:

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

En JSON API, también podemos configurar Access-Control-Allow-Credentials directamente .

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

exponerEncabezados/Control-de-acceso-Exponer-Encabezados

En CORS, Access-Control-Expose-Headers especifica la información del encabezado HTTP que el navegador puede obtener a través del método XMLHttpRequestdel objeto . getResponseHeader()A través de exposeHeaders, podemos configurar el encabezado HTTP Access-Control-Expose-Headers , como por ejemplo:

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

En JSON API, también podemos configurar Access-Control-Expose-Headers directamente .

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

puerto.cliente.req.

req.client.portProporciona la capacidad de acceder a los puertos de conexión del cliente en plantillas.

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

mismo sitio

En comparación con los atributos de cookie originales, SameSite es un atributo de cookie agregado posteriormente para evitar ataques CSRF y el seguimiento de usuarios. sameSiteLa API nos permite configurar el atributo SameSite para las cookies.

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

sameSiteSe admiten varios valores de STRICT , LAX y NONE . En la API de Java, puede configurarlo directamente con una cadena o utilizar la enumeración de CookieAttribute.SameSite .

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

¡Bienvenido a la versión 1.5.0 y experimente las últimas funciones de Moco!

Supongo que te gusta

Origin www.oschina.net/news/256572/moco-1-5-0-released
Recomendado
Clasificación