0

In my Node system, I have a server exposing some API, accessible through an Express Gateway. I would like to force the add of some params in the req.body, according to the App that is using my API.

To do this, I use personalized scope value. For instance, I have App1 and App2 (with their credentials) using my API. So, in eg credentials, I add scope app1 to App1 credentials, and app2 to App2 credentials' scopes.

In gateway.config.yml file I write:

   ...
      - request-transformer:   
        - condition:
          name: allOf
          conditions:
              -
                name: regexpmatch
                match: ^/user/signup?(.*)$                 
              -
                name: expression
                expression: "apiEndpoint.scopes.indexOf('app1')>=0"
        - action:
          body:
            add:
              custom_field: "'app1'"   
        - condition:
          name: allOf
          conditions:
              -
                name: regexpmatch
                match: ^/user/signup?(.*)$                 
              -
                name: expression
                expression: "apiEndpoint.scopes.indexOf('app2')>=0"
        - action:
          body:
            add:
              custom_field: "'app2'"   

But I get this error:

     error: Policy request-transformer params validation failed: 
data should have required property '.headers', 
data should have required property '.body', 
data should match some schema in anyOf
    (node:17362) UnhandledPromiseRejectionWarning: Error: POLICY_PARAMS_VALIDATION_FAILED

============

Actually watching the JSON transformation, the action was not attribute of request-transformer. Bad indentation.

DeLac
  • 1,068
  • 13
  • 43

1 Answers1

0

You should pay attention to the yaml indentation, the one you posted is wrong and so the final object that Express Gateway is trying to digest is incorrect.

I suggest you to use a Yaml2Json Converter, that will definitely help you see the final structure and help you debug the issue.

Cheers!

V.

Vincenzo
  • 1,549
  • 1
  • 9
  • 17