Extension de services Request & Response Modification (existante)

Extension de services Request & Response Modification (existante)

ℹ️
Cette rubrique fait référence à la syntaxe de configuration existante. Les passerelles d’applications sont désormais définies comme des applications Proxy.

Certaines situations requièrent la possibilité de modifier chaque requête et réponse qui passe par le proxy de l’AppGateway. Il s’agit par exemple de définir un en-tête de requête HTTP contenant une valeur dynamique ou de modifier le code de réponse pour une ressource donnée.

Dans la plupart des scénarios d’orchestration, la modification de chaque requête ou réponse est inutile et peut avoir des répercussions sur les performances. Ces extensions de service ne doivent être utilisées que lorsque cela est nécessaire.

ModifyRequestSE

Cette extension de services peut être utilisée pour modifier chaque requête passant par le proxy de l’AppGateway.

appgateways:
  - name: example
    # ...

    modifyRequestSE:
      funcName: ModifyRequest
      file: /etc/maverics/extensions/modifyRequest.go

/etc/maverics/extensions/modifyRequest.go

package main

import (
	"net/http"
	"time"

	"maverics/app"
	"maverics/log"
)

func ModifyRequest(ag *app.AppGateway, req *http.Request) {
	log.Info("msg", "setting header on request")
	req.Header.Set("X-Req-Time", time.Now().String())
}

ModifyResponseSE

Cette extension de services peut être utilisée pour modifier chaque réponse passant par le proxy de l’AppGateway.

appgateways:
  - name: example
    # ...

    modifyResponseSE:
      funcName: ModifyResponse
      file: /etc/maverics/extensions/modifyResponse.go

/etc/maverics/extensions/modifyResponse.go

package main

import (
	"net/http"

	"maverics/app"
	"maverics/log"
)

func ModifyResponse(ag *app.AppGateway, resp *http.Response) {
	if resp.Request.URL.Path != "/special/path/" {
		return
	}

	log.Info("msg", "setting status code for '/special/path/' resource")
	resp.StatusCode = http.StatusOK
}