L'éditeur PHP Apple vous présente comment modifier le RequestBody dans Spring Gateway. Spring Gateway est une passerelle API basée sur le framework Spring, utilisée pour traiter et transmettre les requêtes HTTP. Dans Spring Gateway, RequestBody est utilisé pour recevoir les données du corps de la demande envoyées par le client. Si vous devez modifier le RequestBody, vous pouvez le faire via un filtre ou un intercepteur personnalisé. Tout d'abord, vous devez créer un filtre ou un intercepteur personnalisé, puis obtenir les données du corps de la requête dans le filtre ou l'intercepteur et les modifier. Enfin, les données modifiées sont renvoyées dans le corps de la demande pour un traitement ultérieur. De cette façon, le RequestBody peut être modifié dans Spring Gateway.
Je souhaite modifier le corps de la requête avant de l'acheminer vers l'uri donné. Basé sur la documentation que j'utilise
org.springframework.cloud.gateway.filter.factory.rewrite.modifyrequestbodygatewayfilterfactory Modifiez le texte. Lors du démarrage de mon serveur, le serveur ne démarre pas avec l'erreur suivante Cause : L'élément [spring.cloud.gateway.routes[0].filters[0].modifyrequestbody.class] n'est pas lié. nn opération : nn mettre à jour la configuration de l'application n","context":"valeur par défaut"}
Vous trouverez ci-dessous des exemples de filtres et de fonctions de réécriture
65bee659f312aCe qui suit est la fonction réécrite
65bee659f313aCe qui suit est yaml
routes: - id: order-route-1 uri: http://localhost:8999/ predicates: - Path=/some/path1 - Method=POST filters: - ModifyRequestBody: class: com.xyz.filters.SomeFilter value: application/json, application/xml enabled: true
Il y a quelques problèmes avec votre code :
somefilter
类,只需直接从路由配置中使用 modifyrequestbody
即可。如果你确实需要它来实现 modifyrequestbody
Ce qui ne peut pas être fait, il faut en faire un bean en ajoutant @component. routes: - id: order-route-1 uri: http://localhost:8999/ predicates: - path=/some/path1 - method=post filters: - name: modifyrequestbody args: inclass: com.xyz.filters.oldtype outclass: com.xyz.filters.newtype rewritefunction: com.xyz.filters.myrewritefunction contenttype: application/json
inclass
: Nom de classe complet représentant la structure du corps de la demande d'origine.
outclass
: représente le nom de classe complet de la structure du corps de la requête modifiée.
rewritefunction
: fait référence au nom de classe complet qui implémente l'interface de fonction de réécriture, qui est utilisée pour convertir le corps de la requête du type original en nouveau type.
contenttype
(facultatif) : Précisez ce paramètre lorsque vous souhaitez modifier le type de contenu demandé.
Supposons que vous souhaitiez convertir oldtype
en newtype
, voici l'implémentation de oldtype
转换为 newtype
,下面是 rewritefunction
:
public class MyRewriteFunction implements RewriteFunction<OldType, NewType> { @Override public Publisher<NewType> apply(ServerWebExchange exchange, OldType originalRequest) { NewType modifiedRequest = modifyRequest(originalRequest); return Mono.just(modifiedRequest); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!