Exemplos de política Mapear
Exemplos das definições OpenAPI de políticas Map .
- Mapeamento um para um
- Mapeamento muitos para um
- Uma transformação simples usando o campo de valor
- Mapeando a partir de múltiplos contextos em um novo contexto
- Mapeando para uma definição de esquema sequencial
- Mapeando com um valor padrão
- Mapeando uma matriz para um valor único
- Mapeando elementos de matriz para uma matriz
- Usando as opções XML avançadas
- Aumentar as configurações de análise da política do Map
Mapeamento um para um
O exemplo a seguir:
- mapeia parâmetros da consulta da solicitação para um objeto no corpo da mensagem.
- mapeia uma sequência diretamente para uma sequência única.
- mapeia um número inteiro diretamente para um número inteiro único.
output, define um objeto que contém uma
sequência, um nome e um número inteiro, idade. - map:
title: 1-1 map
inputs:
input_string:
schema:
type: string
variable: request.parameters.name_in # the location of the variable, named "name_in" and found in the query parameters of the request
input_integer:
schema:
type: integer
variable: request.parameters.age_in # another variable in the query parameters of the request
outputs:
output:
schema:
$ref: '#/definitions/output' # a schema definition reference to use for the output. The schema is for the whole of the message body.
variable: message.body
actions:
- set: output.name_out # in the actions section, variables are referenced by their name within the map policy
from: input_string # if a value field is not used, the mapping is direct with the input value used for the output variable
- set: output.age_out # because the 'output' variable is itself an object, further references are made to variables that it contains
from: input_integer
Mapeamento muitos para um
O exemplo a seguir:
- mapeia parâmetros da consulta da solicitação para um objeto no corpo da mensagem.
- mapeia duas sequências para uma sequência única concatenando-as.
- mapeia dois números inteiros para um número inteiro único somando-os.
output, define um objeto que contém uma
sequência e um número inteiro. - map:
title: many-1 map
inputs:
input_string_1:
schema:
type: string
variable: request.parameters.first_name
input_string_2:
schema:
type: string
variable: request.parameters.last_name
input_integer_1:
schema:
type: integer
variable: request.parameters.balance_1
input_integer_2:
schema:
type: integer
variable: request.parameters.balance_2
outputs:
output:
schema:
$ref: '#/definitions/output'
variable: message.body
actions:
- set: output.full_name
from:
- input_string_1
- input_string_2
value: |
var retValue = undefined;
if ($(input_string_1) !== undefined && $(input_string_2) !== undefined) {
retValue = $(input_string_1).toUpperCase() + ' ' + $(input_string_2).toUpperCase()"
}
retValue;
- set: output.total_balance
from:
- input_integer_1
- input_integer_2
value: |
var i1 = 0;
var i2 = 0;
if ($(input_integer_1) !== undefined) i1 = $(input_integer_1);
if ($(input_integer_2) !== undefined) i2 = $(input_integer_2);
i1 + i2;
Uma transformação simples usando o campo de valor
O exemplo a seguir:
- mapeia um parâmetro da consulta da solicitação para um objeto no corpo da mensagem.
- mapeia uma sequência que apresenta caracteres minúsculos para uma sequência única que contém somente caracteres maiúsculos.
output, define um objeto que contém uma
sequência única. - map:
title: Uppercase map
inputs:
input_lowercase:
schema:
type: string
variable: request.parameters.name_in
outputs:
output_uppercase:
schema:
$ref: '#/definitions/output'
variable: message.body
actions:
- set: output_uppercase.name_out
from: input_lowercase
value: $(input_lowercase).toUpperCase() # the input variable is referenced and calls the toUpperCase method to produce a value for the output variable
Mapeando a partir de múltiplos contextos em um novo contexto
O exemplo a seguir:
- mapeia um número inteiro do cabeçalho da solicitação para um número inteiro em um novo corpo da mensagem.
- mapeia uma sequência do corpo da mensagem para o corpo de um novo contexto customizado, denominado new_context.
- map:
title: Context map
inputs:
input_integer:
schema:
type: integer
variable: request.headers.age_in # the 'age_in' header of the request is used as an input
input_string:
schema:
type: string
variable: message.body.name_in # as is the 'name_in' field of the request body
outputs:
output_integer:
schema:
type: integer
variable: message.body.age_out
output_string:
schema:
type: string
variable: new_context.body.name_internal # the context named 'new_context' is created by the map policy and exists only while the assembly is processed
actions:
- set: output_string
from: input_string
- set: output_integer
from: input_integer
Mapeando para uma definição de esquema sequencial
O exemplo a seguir:
- mapeia parâmetros dos cabeçalhos da solicitação para um objeto no corpo da mensagem, que é definido na política de mapa.
- mapeia uma sequência diretamente para uma sequência única.
- mapeia um número inteiro diretamente para um número inteiro único.
- map:
title: Inline schema map
inputs:
input_integer:
schema:
type: integer
variable: request.headers.age_in
input_string:
schema:
type: string
variable: request.headers.name_in
outputs:
output:
schema: # instead of a simple type or a reference to a definition, an inline YAML definition is used
type: object
properties:
name_out:
type: string
name: name_out
age_out:
type: integer
format: int32
name: age_out
title: output
variable: message.body
actions:
- set: output.age_out
from: input_integer
- set: output.name_out
from: input_string
Mapeando com um valor padrão
O exemplo a seguir:
- mapeia uma sequência diretamente para uma sequência única.
- fornece um valor padrão para a sequência de saída se uma sequência de entrada válida não for fornecida.
- map:
title: Default Map
inputs:
input_string:
schema:
type: string
variable: request.headers.name_in
outputs:
output_string:
schema:
type: string
variable: message.body.name_out
actions:
- set: output_string
from: input_string
default: John Smith # the default field is specified in the same way as a value, in this case providing a fixed value
Mapeando uma matriz para um valor único
A política de mapa a seguir:
- mapeia uma matriz única de números inteiros para um número inteiro único.
- soma os números inteiros na matriz.
$(0)representa a saída acumulada porque o mapa avalia todos os valores de elemento de matriz.
- map:
title: Summation map
inputs:
input:
schema:
$ref: '#/definitions/balance_array_in'
variable: request.body
outputs:
output:
schema:
type: integer
variable: message.body.total_balance_out # instead of using a full schema definition of the message body, a single variable in the message body is specified
actions:
- set: output
from: input
foreach: input # the foreach field specifies that each value of the array 'input' is to be iterated over
value: $(0)+$(input) # the $(0) reference is the accumulated value of the 'output' variable
Mapeando elementos de matriz para uma matriz
A política de mapa a seguir:
- mapeia uma matriz, cujos elementos são objetos que contêm dois números inteiros, para uma matriz, cujas entradas contêm um campo de número inteiro único.
- mapeia uma matriz para uma matriz do mesmo comprimento.
- tome a diferença dos valores dos números inteiros em cada elemento de matriz para criar um número inteiro único em cada elemento de matriz.
- map:
title: Array summation
inputs:
input:
schema:
$ref: '#/definitions/balance_and_credit_array'
variable: request.body
outputs:
output_array:
schema:
type: array
variable: message.body
actions:
- create: output_array
from: input
foreach: input
actions:
- set: total_balance_out
from: # inside the actions section, variables inside the array elements being iterated over are used
- integer_in_1
- integer_in_2
value: $(integer_in_1)-$(integer_in_2) # the difference of the variables is taken for each array entry of 'input'
Usando as opções XML avançadas
O exemplo a seguir:
- não inclui elementos vazios na saída da política de mapa.
- usa namespaces explícitos, em vez de herdar namespaces do elemento-pai
- indica que todas as declarações de namespace serão colocadas no elemento XML raiz
- usa todos os elementos de matriz em vez de somente o primeiro
- ignora referências de variáveis API Connect
- mapeia valores de propriedade de entrada com um valor nulo para o documento de saída
- manipula referências de tipos circulares de maneira otimizada
actions:
- set: output, two
from: input, one
options:
includeEmptyXMLElements: false
namespaceInheritance: false
inlineNamespaces: false
mapArrayFirstElementValue: false
mapResolveApicVariables: false
mapNullValue: true
mapOptimizeSchemaDefinition: true
mapCreateEmptyArray: parent
Aumentar as configurações de análise da política do Map
Para aumentar a referência de configurações de análise, você pode atualizar o arquivo YAML de origem com as configurações de análise desejadas. Seguindo o exemplo a seguir, você pode atualizar o arquivo YAML com as configurações de análise necessárias.
- map:
version: 2.1.0
title: map
inputs: {}
outputs: {}
actions: []
parse-settings-reference:
parse-settings:
document_type: detect
max_doc_size: 8388608
max_nesting_depth: 512
max_width: 8192
max_name_length: 256
max_value_length: 8192
max_unique_names: 1024
max_unique_prefixes: 1024
max_unique_namespaces: 1024
max_number_length: 128
options:
mapEmulateV4EmptyJSONObject: false
mapEmulateV4DefaultRequiredProps: true
mapEnablePostProcessingJSON: false
mapReferenceLimit: 1
Para obter mais informações, consulte “Criação de configurações de análise ”.