Com o módulo NPM do @netuno/service-cliente
basta enviar o array no data
, pode ser enviado uma estrutura complexa sem problemas, por exemplo:
_service({
method: 'POST',
url: "/services/encomenda",
data: {
cliente: { codigo: 'abc' },
itens: [ { nome: 'lua' }, { nome: 'sol' } ],
extras: [ 'jaca', 'embu' ]
},
success: (response) => {
if (response.text) {
console.log("Service Response", response.text);
}
if (response.json) {
console.log("Service Response", response.json);
}
},
fail: (e) => {
console.log("Service Error", e);
}
});
Do lado do serviço, em server/services/encomenda.js
pode obter os dados assim:
const cliente = _req.getValues('cliente')
const itens = _req.getValues('itens')
const extras = _req.getValues('extras')
_log.info(`Cliente Código: ${cliente.getString('codigo')}`)
for (const item of itens) {
_log.info(`Item: ${item.getString('nome')}`)
}
for (const extra of extras) {
_log.info(`Extra: ${extra}`)
}
No caso do Java vai variar como esta sendo implementado, o _req
pode ser obtido através do proteu.getRequestAll()
ou se esta a utilizar o WebMaster
ai pode carregar com o resource(Req.class)
.
E no Java para realizar os foreachs pode ser assim:
for (Values item : itens.list(Values.class)) {
....
}
for (String extra : extras.list(String.class)) {
....
}
Ou seja, o getValues
é utilizado tanto para obter objetos como array/listas.
No Netuno o objeto Java interno do Values
é uma junção de Map
e do Iterable
, dai funcionar para ambos os casos, mas forma como é utilizado varia de acordo como ele é definido.