Criação de REST API: mudanças entre as edições

De EAPn
Ir para navegação Ir para pesquisar
Sem resumo de edição
Sem resumo de edição
Linha 30: Linha 30:


*Clique em Criar.
*Clique em Criar.

===Escreva o código===

O primeiro passo seria remover arquivos e códigos relacionados à configuração da API REST, pois não precisamos definir parâmetros de configuração para nossa API REST:

Excluir configuration.properties da pasta src/main/resources

Excluir testConfiguration.properties de src/test/resources

Remova a configuração do arquivo de configuração mock. Edite IndexTest.groovy, vá para o método setup() e remova a linha que começa com resourceProvider....

Remova o exemplo de uso de configuração no arquivo Index.groovy (veja o comentário começando com: "Here is an example...").

Agora podemos adicionar nossa lógica de negócios. Em Index.groovy, no método doHandle, localize o comentário "Your code goes here" e adicione o código abaixo no seu(removendo o result existente e a declaração de retorno):<br>
<code>
// Convert parameters from string to int
p = p as int
c = c as int

// Initialize the list to store users information
def usersInformation = []

// Get the list of user
List<User> users = context.apiClient.identityAPI.getUsers(p*c, c, UserCriterion.FIRST_NAME_ASC)

// Iterate over each user
for (user in users) {
// Get user extra information (including email address)
ContactData contactData = context.apiClient.identityAPI.getUserContactData(user.id, false)

// Create a map with current user first name, last name and email address
def userInformation = [firstName: user.firstName, lastName: user.lastName, email: contactData.email]

// Add current user information to the global list
usersInformation << userInformation
}

// Prepare the result
def result = [p: p, c: c, userInformation: usersInformation]

int startIndex = p*c
int endIndex = p*c + users.size() - 1

// Send the result as a JSON representation
return buildPagedResponse(responseBuilder, new JsonBuilder(result).toString(), startIndex, endIndex, context.apiClient.identityAPI.numberOfUsers)
</code>
CTRL+SHIFT+O para importar o que faltar
===Teste o código-fonte===
Agora precisamos atualizar o teste para verificar o comportamento de nossa extensão de API REST editando IndexTest.groovy.

O primeiro passo é definir alguns mocks para nossas dependências externas, como a API Engine Identity. Adicione a seguinte declaração de mocks após as existentes:

Edição das 18h58min de 5 de maio de 2022

Extensões da API REST

Crie extensões de API REST para usar dados de sistemas de terceiros (bancos de dados, serviços web, Bonita Engine, etc) em formulários e páginas.

As extensões da API REST podem ser usadas para consultar dados de negócios, APIs do Bonita Engine ou um sistema de informações externo (como um banco de dados, serviço da Web, diretório LDAP…). Eles também ajudam a manter uma separação clara entre o front-end (formulários, páginas e interfaces visíveis para os usuários) e o back-end (processos).

Exemplo

As seções a seguir mostram como criar uma extensão de API REST. Como exemplo, criamos uma extensão de API REST que usa o Bonita BPM Engine para fornecer informações do usuário (nome, sobrenome, endereço de e-mail).

Gerar um novo esqueleto de extensão da API REST

  • No menu Desenvolvimento, escolha REST API Extension e, em seguida, New…​.
  • Insira um nome, por exemplo, informações do usuário, extensão da API REST.
  • Insira uma Descrição, por exemplo, Query Bonita Engine para recuperar informações do usuário.
  • Insira um nome de pacote, use para definir o ID do grupo do artefato, por exemplo: com.company.rest.api
  • Insira um nome de projeto, por exemplo userInformationRestAPIExtension
  • Clique em Avançar.
  • Insira o pathTemplate para esta extensão da API REST, por exemplo userInformation. Este será o ponto de
    acesso da API e segue este padrão: {bonita_context}/API/extension/userInformation.
  • Como essa extensão da API REST não acessa dados corporativos, você pode desmarcar com segurança a caixa de seleção "Adicionar dependências BDM".
  • Defina um nome de permissão para a extensão (substitua o padrão), por exemplo read_user_information. Este é o nome da permissão que os usuários devem ter para ter acesso à extensão (consulte Uso de extensões da API REST)
  • Clique em Avançar
  • Esta tela define os parâmetros de URL que serão passados ​​para a API. Por padrão, os parâmetros p e c são definidos para habilitar o resultado paginado, isso se aplica bem em nossos exemplos, pois queremos retornar uma lista de usuários.
  • Clique em Criar.

Escreva o código

O primeiro passo seria remover arquivos e códigos relacionados à configuração da API REST, pois não precisamos definir parâmetros de configuração para nossa API REST:

Excluir configuration.properties da pasta src/main/resources

Excluir testConfiguration.properties de src/test/resources

Remova a configuração do arquivo de configuração mock. Edite IndexTest.groovy, vá para o método setup() e remova a linha que começa com resourceProvider....

Remova o exemplo de uso de configuração no arquivo Index.groovy (veja o comentário começando com: "Here is an example...").

Agora podemos adicionar nossa lógica de negócios. Em Index.groovy, no método doHandle, localize o comentário "Your code goes here" e adicione o código abaixo no seu(removendo o result existente e a declaração de retorno):
// Convert parameters from string to int p = p as int c = c as int

// Initialize the list to store users information def usersInformation = []

// Get the list of user List<User> users = context.apiClient.identityAPI.getUsers(p*c, c, UserCriterion.FIRST_NAME_ASC)

// Iterate over each user for (user in users) { // Get user extra information (including email address) ContactData contactData = context.apiClient.identityAPI.getUserContactData(user.id, false)

// Create a map with current user first name, last name and email address def userInformation = [firstName: user.firstName, lastName: user.lastName, email: contactData.email]

// Add current user information to the global list usersInformation << userInformation }

// Prepare the result def result = [p: p, c: c, userInformation: usersInformation]

int startIndex = p*c int endIndex = p*c + users.size() - 1

// Send the result as a JSON representation return buildPagedResponse(responseBuilder, new JsonBuilder(result).toString(), startIndex, endIndex, context.apiClient.identityAPI.numberOfUsers) CTRL+SHIFT+O para importar o que faltar

Teste o código-fonte

Agora precisamos atualizar o teste para verificar o comportamento de nossa extensão de API REST editando IndexTest.groovy.

O primeiro passo é definir alguns mocks para nossas dependências externas, como a API Engine Identity. Adicione a seguinte declaração de mocks após as existentes: