Saltar para o conteúdo principal
Versão: 20 R5 BETA

Manipulação de dados

Todos los atributos, dataclasses expuestos y todas las funciones pueden ser accedidos a través de REST. Os nomes de classes de dados, atributos e métodos são sensíveis às maiúsculas e minúsculas, entretanto, os dados das pesquisas não são.

Pesquisas de dados

To query data directly, you can do so using the $filter function. Por exemplo, para encontrar a pessoa chamada "smith" poderia escrever:

http://127.0.0.1:8081/rest/Person/?$filter="lastName=Smith"

Adicionar, modificar e apagar entidades

Com o REST API, pode realizar todas as manipulações de dados que quiser em 4D.

To add and modify entities, you can call $method=update. If you want to delete one or more entities, you can use $method=delete.

Además la recuperación de una sola entidad en una clase de datos utilizando {dataClass}({key}), también puede escribir una función de clase que devuelva una entity selection (o una colección

Before returning a selection, you can also sort it by using $orderby one one or more attributes (even relation attributes).

Add the $skip (to define with which entity to start) and $top/$limit (to define how many entities to return) REST requests to your queries or entity selections to navigate the collection of entities.

Criar e gerenciar conjuntos de entidades

Un conjunto de entidades (también conocido como selección de entidades) es una colección de entidades obtenidas a través de una petición REST que se almacena en la caché de 4D Server. Usar um conjunto de entidades previne que pesquise continuamente sua aplicação pelos mesmos resultados. Acessar um conjunto de entidades é mais rápido e pode melhorar a velocidade de sua aplicação.

To create an entity set, call $method=entityset in your REST request. As a measure of security, you can also use $savedfilter and/or $savedorderby when you call $filter and/or $orderby so that if ever the entity set timed out or was removed from the server, it can be quickly retrieved with the same ID as before.

Para acceder al conjunto de entidades, debe utilizar $entityset/{entitySetID}, por ejemplo:

/rest/People/$entityset/0AF4679A5C394746BFEB68D2162A19FF

By default, an entity set is stored for two hours; however, you can change the timeout by passing a new value to $timeout. O timeout é continuamente resetado ao valor definido (seja o valor padrão ou um definido por você) a cada vez que for usado.

If you want to remove an entity set from 4D Server's cache, you can use $method=release.

Se modificar qualquer dos atributos de entidade no conjunto de entidades, o valor será atualizado. Entretanto, se modificar um valor que era uma parte da pesquisa executada para criar o conjunto de entidades, não será removido do conjunto de entidades mesmo se não se enquadrar mais nos critérios de pesquisa. Qualquer entidade que apagar não será mais parte do conjunto de entidades.

Se o conjunto de entidades não existir mais no cache 4D Server, será recriada com um novo timeout padrão de 10 minutos. O conjunto de entidades será renovado (certas entidades podem ser incluidas e outras podem ser removidas) já que desde a última vez que foi criada, não existe mais antes da recriação).

Using $entityset/{entitySetID}?$logicOperator... &$otherCollection, you can combine two entity sets that you previously created. Pode então combinar os resultados em ambos, retornar só o que é comum entre os dois, ou retornar o que não é comum entre os dois.

A new selection of entities is returned; however, you can also create a new entity set by calling $method=entityset at the end of the REST request.

Calcular dados

By using $compute, you can compute the average, count, min, max, or sum for a specific attribute in a dataclass. Pode também computar todos os valores com a palavra chave $all.

Por exemplo, para obter o maior salário:

/rest/Employee/salary/?$compute=sum

Para computar todos os valores e retornar um objeto JSON:

/rest/Employee/salary/?$compute=$all

Chamar as funções de classe do modelo de dados

Puede llamar las funciones de clase usuarios ORDA del modelo de datos vía las peticiones POST, para poder beneficiarse del API de la aplicación objetivo. Por ejemplo, si ha definido una función getCity() en la dataclass City, podría llamarla utilizando la siguiente petición:

/rest/City/getCity

con los datos en el cuerpo de la petición: ["Paris"]

Pode chamar métodos de projeto 4D que são expostos como serviços REST.

Selecionar atributos a obter

Siempre se puede definir qué atributos devolver en la respuesta REST después de una solicitud inicial pasando su ruta en la solicitud (por ejemplo, Company(1)/name,revenues/)

Pode aplicar essa técnica a:

ObjectSintaxeExemplo
Dataclass{dataClass}/{att1,att2...}/People/firstName,lastName
Coleção de entidades{dataClass}/{att1,att2...}/?$filter="{filter}"/People/firstName,lastName/?$filter="lastName='a@'"
Entidade especificada{dataClass}({ID})/{att1,att2...}/People(1)/firstName,lastName
{dataClass}:{attribute}(value)/{att1,att2...}//People:firstName(Larry)/firstName,lastName/
Seleção de entidades{dataClass}/{att1,att2...}/$entityset/{entitySetID}/People/firstName/$entityset/528BF90F10894915A4290158B4281E61

Los atributos deben estar delimitados por una coma, i.e., /Employee/firstName,lastName,salary. Os atributos de armazenamento ou relação podem ser passados.

Exemplos

Aqui alguns exemplos, mostrando como especificar que atributos vai retornar dependendo da técnica usada para recuperar entidades.

Pode aplicar esse filtro das maneiras a seguir:

  • Classes de dados (todas ou uma coleção de entidades em uma classe de dados)
  • Entidades especificas
  • Conjuntos de entidades

Exemplo com uma dataclass

Las siguientes peticiones devuelven sólo el nombre y el apellido de la clase de datos People (ya sea toda la clase de datos o una selección de entidades basada en la búsqueda definida en $filter).

GET /rest/People/firstName,lastName/

Resultado:

{
__entityModel: "People",
__COUNT: 4,
__SENT: 4,
__FIRST: 0,
__ENTITIES: [
{
__KEY: "1",
__STAMP: 1,
firstName: "John",
lastName: "Smith"
},
{
__KEY: "2",
__STAMP: 2,
firstName: "Susan",
lastName: "O'Leary"
},
{
__KEY: "3",
__STAMP: 2,
firstName: "Pete",
lastName: "Marley"
},
{
__KEY: "4",
__STAMP: 1,
firstName: "Beth",
lastName: "Adams"
}
]
}

GET /rest/People/firstName,lastName/?$filter="lastName='A@'"/

Resultado:

{
__entityModel: "People",
__COUNT: 1,
__SENT: 1,
__FIRST: 0,
__ENTITIES: [
{
__KEY: "4",
__STAMP: 4,
firstName: "Beth",
lastName: "Adams"
}
]
}

Exemplo entidade

As petições abaixo retornar apenas os atributos primeiro nome e último sobrenome de uma entidade especifica na dataclasse People:

GET /rest/People(3)/firstName,lastName/

Resultado:

{
__entityModel: "People",
__KEY: "3",
__STAMP: 2,
firstName: "Pete",
lastName: "Marley"
}

GET /rest/People(3)/

Resultado:

{
__entityModel: "People",
__KEY: "3",
__STAMP: 2,
ID: 3,
firstName: "Pete",
lastName: "Marley",
salary: 30000,
employer: {
__deferred: {
uri: "http://127.0.0.1:8081/rest/Company(3)",
__KEY: "3"
}
},
fullName: "Pete Marley",
employerName: "microsoft"

}

Exemplo de conjunto de Entidades

Una vez que haya creado un conjunto de entidades, puede filtrar la información que contiene definiendo qué atributos debe devolver:

GET /rest/People/firstName,employer.name/$entityset/BDCD8AABE13144118A4CF8641D5883F5?$expand=employer

Vendo um atributo de imagem

Se quiser ver um atributo de imagem integralmente, escreva o abaixo:

GET /rest/Employee(1)/photo?$imageformat=best&$version=1&$expand=photo

For more information about the image formats, refer to $imageformat. For more information about the version parameter, refer to $version.

Salvar um atributo BLOB ao disco

Se quiser salvar um BLOB armazenado na dataclass, pode escrever:

GET /rest/Company(11)/blobAtt?$binary=true&$expand=blobAtt

Recuperar apenas uma entidade

You can use the {dataClass}:{attribute}(value) syntax when you want to retrieve only one entity. É particularmente útil quando quiser fazer uma pesquisa relacionada que não seja criada com a mesma chave primária que a dataclass. Por exemplo, pode escrever:

GET /rest/Company:companyCode("Acme001")