Manojkumar Kasiviswanathan
07/26/2024, 10:39 AMLee Turner
07/26/2024, 2:28 PMManojkumar Kasiviswanathan
07/26/2024, 2:30 PMLee Turner
07/26/2024, 2:32 PMManojkumar Kasiviswanathan
07/26/2024, 2:34 PM{
"request": {
"method": "GET",
"urlPathPattern": "^/users/\\d+$",
"headers": {
"Accept": {
"matches": "^application/json;?.*"
}
}
},
"response": {
"status": 200,
"headers": {
"Content-Type": "application/json"
},
"transformers": [
"response-template"
],
"transformerParameters": {
"usernameMapping": {
"1": "foo",
"2": "bar",
"3": "baz"
}
},
"jsonBody": {
"id": "{{#assign 'userId'}}{{request.pathSegments.[1]}}{{/assign}}{{userId}}",
"username": "{{lookup parameters.usernameMapping userId}}"
}
}
}
Basically I am trying to separate the data from the transformerParameters in to a file like data.json and response into json response file.Manojkumar Kasiviswanathan
07/26/2024, 2:35 PMLee Turner
07/26/2024, 2:35 PMManojkumar Kasiviswanathan
07/26/2024, 2:36 PMLee Turner
07/26/2024, 2:41 PMManojkumar Kasiviswanathan
07/26/2024, 2:42 PMManojkumar Kasiviswanathan
07/26/2024, 2:49 PMLee Turner
07/26/2024, 2:53 PMLee Turner
07/26/2024, 3:34 PMnino
-> username
example above but it doesn't use the transformer parametersLee Turner
07/26/2024, 3:35 PM{
"request": {
"method": "GET",
"urlPathTemplate": "/users/{nino}"
},
"response": {
"status": 200,
"headers": {
"Content-Type": "application/json"
},
"bodyFileName": "nino.txt",
"transformers": [
"response-template"
]
}
}
Lee Turner
07/26/2024, 3:35 PM{{#assign 'data'}}
[
{
"nino": "1",
"id": "foo"
},
{
"nino": "2",
"id": "bar"
},
{
"nino": "3",
"id": "baz"
}
]
{{/assign}}
{{#assign 'expr'}}$[?(@.nino=={{request.path.nino}})].id{{/assign}}
{
"id": "{{request.path.nino}}",
"username": "{{jsonPath (jsonPath data expr) '$[0]'}}"
}
Lee Turner
07/26/2024, 3:35 PMLee Turner
07/26/2024, 3:35 PM{
"id": "2",
"username": "bar"
}
Lee Turner
07/26/2024, 3:39 PM1
if you passed foo
. Does that need to be the same stub or can that be a separate stub on a different path (url)Manojkumar Kasiviswanathan
07/26/2024, 3:41 PMLee Turner
07/26/2024, 3:41 PMManojkumar Kasiviswanathan
07/26/2024, 3:42 PMManojkumar Kasiviswanathan
07/26/2024, 3:43 PMLee Turner
07/26/2024, 3:47 PMManojkumar Kasiviswanathan
07/26/2024, 3:48 PMLee Turner
07/26/2024, 3:48 PMManojkumar Kasiviswanathan
07/26/2024, 3:49 PMLee Turner
07/26/2024, 3:52 PMManojkumar Kasiviswanathan
07/26/2024, 3:54 PMLee Turner
07/26/2024, 3:55 PMManojkumar Kasiviswanathan
07/26/2024, 3:58 PMManojkumar Kasiviswanathan
07/26/2024, 3:58 PMLee Turner
07/26/2024, 4:01 PMnino
and id
). Your path structure would have multiple levels if you were to do this (/user/{nino}/{id}
). If you only want one level it is difficult to know whether you have passed an id or a ninoLee Turner
07/26/2024, 4:01 PMManojkumar Kasiviswanathan
07/26/2024, 4:04 PM/user/convert-nino-to-id/123
/user/convert-id-to-nino/foo
Lee Turner
07/26/2024, 4:04 PMLee Turner
07/26/2024, 4:24 PM{
"request": {
"method": "GET",
"urlPathTemplate": "/user/{action}/{data}"
},
"response": {
"status": 200,
"headers": {
"Content-Type": "application/json"
},
"bodyFileName": "nino.txt",
"transformers": [
"response-template"
]
}
}
And this as your body file:
{{#assign 'data'}}
[
{
"nino": "1",
"id": "foo"
},
{
"nino": "2",
"id": "bar"
},
{
"nino": "3",
"id": "baz"
}
]
{{/assign}}
{{#eq request.path.action 'convert-nino-to-id'}}
{{#assign 'idExpr'}}$[?(@.nino=='{{request.path.data}}')].id{{/assign}}
{
"id": "{{request.path.data}}",
"username": "{{jsonPath (jsonPath data idExpr) '$[0]'}}"
}
{{else}}
{{#assign 'ninoExpr'}}$[?(@.id=='{{request.path.data}}')].nino{{/assign}}
{
"id": "{{jsonPath (jsonPath data ninoExpr) '$[0]'}}",
"username": "{{request.path.data}}
}
{{/eq}}
Then you can make requests using your real url paths:
GET <http://localhost:8080/user/convert-nino-to-id/3>
GET <http://localhost:8080/user/convert-id-to-nino/foo>
Lee Turner
07/26/2024, 4:26 PMManojkumar Kasiviswanathan
07/26/2024, 4:37 PM