Pregunta

Tengo un relativamente simple (creo) de casos de uso, pero no puedo encontrar ningún ejemplo en el que alguien ha hecho esto. Estamos utilizando barniz como una memoria caché y proxy inverso frente a dos aplicaciones diferentes y nos gustaría hacer las cosas un poco más unificada tanto, ya que ambos hacen cosas similares. Tenía la esperanza de barniz pudo evitar volver a escribir las direcciones URL, como se muestra a continuación.

URL de la aplicación original para la paginación (llegar primeros 10 artículos):

http://myapplication.com/products/?startindex=1&endindex=10

URL deseado:

http://myapplication.com/products/?paginate=1:10

Este es sólo un ejemplo (la más compleja, ya que combina dos parámetros), pero en todos los casos los valores de entrada para los parámetros permanecen iguales, es sólo que los nombres de los parámetros cambiarán.

Otro ejemplo sería:

http://myapplication.com/search/?query=something

a:

http://myapplication.com/search/?q=something

¿Alguien tiene alguna experiencia con el barniz y cómo esto se podría hacer?

Gracias

¿Fue útil?

Solución

Al parecer, se puede. La respuesta es que regsub es su amigo.

Por ejemplo:

if (req.url ~ "(.*)(id=)") {
        set req.url = regsub(req.url, "(feeds/[a-zA-Z]*/)(.*)([\?|&])(id=)([a-zA-Z0-9]*)(.*)", "\1\2\3byGuid=\5\6");
}

Esto convertirá y el parámetro de entrada "ID" en un "byGuid" parámetro en el backend. t también hace un montón de cosas con el resto de la cadena de URL pero los fundamentos están ahí. Así que si alguien quiere hacer algo similar este es un buen punto de partida.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top