Criando Web Services RESTful

Crie web services RESTful usando as páginas Módulos, Modelos e Processadores.

Para criar um web service RESTful, você precisa:

  • Definir um módulo de recurso

  • Definir um modelo de recurso

  • Defina um ou mais processadores de recursos, como GET, PUT, POST ou DELETE. Opcionalmente, defina parâmetros que você precisa passar para o handler de recursos.

As seções a seguir fornecem informações sobre como criar módulos de recursos, modelos de recursos e handlers de recursos.

Veja Também:

Gerenciando Módulos de Recursos

Você pode definir, editar e excluir módulos de recurso na página Módulos.

Para navegar até a página Módulos, na página Visão Geral do REST, clique em Módulos em Objetos ou, no menu do cabeçalho, selecione Módulos.

Os atributos do módulo exibidos por padrão na exibição de cartão são mostrados na figura a seguir.

O status do módulo pode ser publicado ou não publicado. Se o status for não publicado, o ícone será exibido em vermelho.

Clique no nome do módulo na exibição de cartão para ir para a página Modelos desse módulo. Você também pode navegar até a página Modelos por meio do menu de contexto.

As ações disponíveis no menu de contexto são:

Criando um Módulo de Recursos

Esta seção descreve como criar um módulo de recurso.

  1. Na página Módulos, clique em Criar Módulo.
  2. Insira os seguintes campos. Os campos com um asterisco (*) são obrigatórios:

    Guia Definição do módulo

    • Nome do Módulo: Informe o nome do módulo. Esse campo faz distinção entre maiúsculas e minúsculas.

    • Caminho Base: Informe a base do URI para acessar o serviço RESTful. Por exemplo: hr/ significa que todos os URIs que começam com hr/ serão atendidos por este módulo de recursos. Observe a alteração no URL de Visualização à medida que você informa o caminho base.

    • Foi Publicado: Ative para disponibilizar o serviço RESTful para uso.

    • Tamanho da Paginação: Informe ou selecione o número de resultados a serem retornados em cada página com base em uma consulta de banco de dados. O valor padrão é 25.

    • Protegido por Privilégio: Selecione um privilégio para proteger o módulo da lista drop-down.
    • Comentários: Informe comentários descritivos.

    • Ir para o Módulo após a criação: Selecione esta opção para ir para a página Modelos após a criação do módulo.

    Guia Origens permitidas

    • Informe as origens que têm permissão para acessar os modelos de recurso. Clique em Adicionar(+) para adicionar cada origem. Por exemplo:

      http://example1.org

      https://*.example2.com

    Mostrar código: Selecione esta opção para exibir o código PL/SQL equivalente ao controle deslizante Criar Módulo. Você pode copiar e executar esse código PL/SQL na planilha para executar a mesma ação que ocorre quando você clica em Criar no controle deslizante Criar Módulo.

  3. Clique em Criar.

    O novo módulo é exibido na página Módulos. Se não conseguir vê-lo, localize o módulo usando o campo Pesquisar.

Importando um Módulo de Recursos

Esta seção descreve como importar um módulo de recurso.

Observação:

Você só pode importar um documento do OpenAPI versão 2.0 ou 3.0 no formato JSON.
  1. Na página Módulos, no canto superior direito, clique em Importar Módulo.
  2. Procure e selecione o arquivo JSON a ser importado. Clique em Abrir.

    O controle deslizante Módulo de Importação é exibido com os campos Caminho Base e URL de Visualização preenchidos previamente. Edite o Caminho Base conforme necessário. A edição do campo de caminho base também atualizará o caminho base no formato JSON exibido no controle deslizante.

  3. Clique em Importar.

    Quando o módulo é importado, uma configuração de privilégio é criada e definida para proteger o módulo. O nome do privilégio é gerado usando o caminho base e adicionando "_priv" no final da string do caminho base e também substituindo cada barra "/" no caminho base para sublinhado "_".

  4. Seu módulo está pronto para edição.

    Após a importação do módulo, os modelos e os processadores são criados, mas o módulo não é publicado. Você precisa fornecer blocos SQL e PL/SQL para cada handler e publicar seu módulo quando ele estiver pronto para teste ou produção.

Editando um Módulo de Recursos

Esta seção descreve como editar um módulo de recurso.

  1. Na página Módulos, para o módulo específico, clique em ícone de menu de contexto e selecione Editar.
  2. Edite os campos obrigatórios e clique em Salvar. Para obter uma descrição dos campos, consulte Criando um Módulo de Recursos.

Excluindo um Módulo de Recursos

Esta seção descreve como excluir um módulo de recurso.

  1. Na página Módulos, para o módulo específico, clique em menu de contexto e selecione Excluir.

    Um prompt é exibido solicitando a confirmação.

  2. Clique em OK para excluir.

Publicando/Cancelando a Publicação de um Módulo de Recurso

Esta seção descreve como disponibilizar ou não um módulo de recurso.

  1. Na página Módulos, para o módulo específico, clique em menu de contexto e selecione Publicar ou Cancelar Publicação.

    Você verá um prompt para confirmar.

  2. Clique em OK.

Exportando um Módulo de Recursos

Você pode exportar o código-fonte PL/SQL para a API ou o código JSON de API Aberta (Swagger) para um módulo de recursos ou serviço RESTful. Se o módulo tiver modelos, handlers, parâmetros, funções, etc., esses objetos também serão exibidos e exportados.

  1. Na página Módulos, para um módulo específico, clique em menu de contexto e selecione Exportar Módulo.
  2. Selecione PL/SQL para copiar ou exportar a origem PL/SQL para a API. Selecione OpenAPI para copiar ou exportar o código JSON Open API (Swagger) para o módulo.

    Observação:

    Um módulo exportado usando a API Aberta sempre é importado com um status não publicado.
  3. Clique em Copiar para a Área de Transferência para copiar o código ou clique em Fazer Download para fazer download no computador local.

Exibindo o Módulo no OpenAPI View

Esta seção descreve como abrir o módulo na view Abrir API.

A opção de exibição Abrir API está disponível para módulos publicados e não protegidos.
  1. Na página Módulos, para o módulo específico, clique em menu de contexto e selecione OpenAPI View.
  2. O módulo é exibido como uma implementação de IU do Swagger.
    Você pode exibir e executar os handlers, passar parâmetros para os handlers e copiar ou fazer download das respostas.

    Para saber mais sobre a implementação da IU do Swagger, consulte o site oficial da UI do Swagger.

Gerenciando Modelos de Recursos

Você pode definir, editar e excluir modelos de recurso para um módulo na página Modelos.

Para navegar até esta página, na página Módulos, clique em menu de contexto para um módulo e selecione Modelos ou clique no nome do módulo na exibição de cartão.

Na parte superior da página, o cartão de módulo está disponível com opções de menu de contexto, como Editar, Excluir, Publicar e Exportar.

Os atributos de modelos exibidos por padrão na exibição de cartão são mostrados na figura a seguir.

Clique no nome do modelo na exibição de cartão para ir para a página Processadores. Também é possível navegar até a página Processadores por meio do menu de contexto.

As ações disponíveis no menu de contexto são:

Criando um Modelo de Recurso

Esta seção descreve como criar um modelo de recurso.

  1. Na página Modelos de um módulo, clique em Criar Modelo.
  2. Insira os seguintes campos. Os campos com um asterisco (*) indicam que são obrigatórios:
    • Modelo de URI: Informe o padrão de URI do modelo de recurso.

      Por exemplo, um padrão de /objects/:object/:id? corresponderá a /objects/emp/101 (corresponde a uma solicitação para o item no recurso emp com o id 101) e também corresponderá a /objects/emp/ (corresponde a uma solicitação para o recurso emp, porque o parâmetro :id é anotado com o modificador ?, o que indica que o parâmetro id é opcional).

      Observe que o URL de Visualização é alterado à medida que você digita o modelo de URI.

    • Prioridade: Informe ou escolha a prioridade de como o modelo de recurso deve ser avaliado (1 é baixa prioridade e 9 é alta prioridade).

    • Tipo de Tag de Entidade HTTP: Selecione o tipo de tag de entidade a ser usado pelo modelo de recurso. Uma tag de entidade é um Cabeçalho HTTP que atua como um identificador de versão para um recurso.

      As opções são:

      • HASH Seguro (padrão): O conteúdo da representação de recurso retornada é HASH usando uma função de compilação segura para fornecer uma impressão digital exclusiva para uma determinada versão de recurso.

      • Consulta: Defina uma consulta manualmente que identifique exclusivamente uma versão de recurso. Uma consulta definida manualmente geralmente pode gerar uma tag de entidade de forma mais eficiente do que hash toda a representação de recursos.

      • Nenhum: Não gere uma tag de entidade.

    • Comentários: Informe comentários descritivos, se houver.

    • Ir para Handlers após a criação: Selecione esta opção para ir para a página Handlers após a criação do modelo.

    Mostrar código: Selecione esta opção para exibir o código PL/SQL equivalente ao controle deslizante Criar Modelo. Você pode copiar e executar esse código PL/SQL na planilha para executar a mesma ação que ocorre quando você clica em Criar no controle deslizante Criar Modelo.

  3. Clique em Criar.

    O novo modelo do módulo é adicionado à página Modelos.

    Se a opção "Ir para Handlers após a criação" estiver selecionada, você poderá usar o nome do módulo nas trilhas de navegação na parte superior da página para ver a lista de modelos do módulo.

Editando um Modelo de Recurso

Esta seção descreve como editar um modelo de recurso.

  1. Na página Modelos, para um modelo específico, clique em menu de contexto e selecione Editar.
  2. Edite os campos obrigatórios e clique em Salvar.

    Para obter uma descrição dos campos, consulte Criando um Modelo de Recurso.

Excluindo um Modelo de Recurso

Esta seção descreve como excluir um modelo de recurso.

  1. Na página Templates, para um modelo específico, clique em menu de contexto e selecione Excluir.

    Você é solicitado a confirmar.

  2. Clique em OK para excluir.

Gerenciando Handlers de Recursos

Você pode criar, editar e excluir handlers de recursos para um modelo na página Handlers.

Para navegar até essa página, na página Modelos, clique em menu de contexto para um modelo e selecione Handlers ou clique no nome do modelo na exibição de cartão.

Na parte superior da página, o cartão de modelo está disponível com opções de menu de contexto, como Editar e Excluir.

Os atributos do manipulador exibidos por padrão na exibição de cartão são mostrados na figura a seguir.

O Método HTTP pode ser um dos seguintes: GET, PUT, POST e DELETE.

Você pode navegar até a página de método HTTP usando o menu de contexto. Há três guias exibidas na página de método HTTP: Origem, Parâmetros e Solicitações Pré-Autenticadas.

Para criar um handler de recursos, consulte Criando um Handler de Recursos.

Observação:

Essa opção não estará disponível se o modelo tiver todos os quatro processadores criados (GET, POST, PUT, DELETE).

As ações disponíveis no menu de contexto são:

Criando um Handler de Recursos

Esta seção descreve como criar um handler de recursos. de

  1. Na página Handlers, clique em Criar Handler.
  2. Especifique as propriedades do handler de recursos. As opções específicas dependem do tipo de método.

    Guia Definição do Handler

    • Método: Informe o método de solicitação HTTP deste handler: GET (recupera uma representação de um recurso), POST (cria um novo recurso ou adiciona um recurso a uma coleção), PUT (atualiza um recurso existente) ou DELETE (exclui um recurso existente). Apenas um handler para cada método HTTP é permitido.

    • Itens por Página: Informe ou escolha o tamanho de paginação padrão ou o número de linhas a serem retornadas para uma consulta de banco de dados. Esta opção só está disponível para handlers de GET. Se este valor não estiver definido, o número de itens por página será o definido no módulo.

    • Tipo de Origem: Selecione a implementação de origem para o método HTTP selecionado. O padrão é a consulta de coleta.

      • Consulta de Coleta: Executa uma consulta SQL e transforma o conjunto de resultados em uma representação JSON. Disponível quando o método HTTP é GET.

      • Item de Coleta: Executa uma consulta SQL que retorna uma linha de dados em uma representação JSON. Disponível quando o método HTTP é GET.

      • Mídia: Executa uma Consulta SQL em conformidade com um formato específico e transforma o conjunto de resultados em uma representação binária com um cabeçalho HTTP Content-Type que o acompanha identificando o tipo de mídia da Internet da representação.

      • PL/SQL: Executa um bloco PL/SQL anônimo e transforma qualquer parâmetro OUT ou IN/OUT em uma representação JSON.

    • Origem: Informe a consulta SQL ou o bloco PL/SQL para o método HTTP. Na página de detalhes do handler, você pode testar o código do handler SQL ou PL/SQL no editor do handler.

    • Ir para Handler após a criação: Selecione essa opção para ir para a página de detalhes após a criação do handler.

    Guia MIMEs permitidos

    Identifica o tipo de informação incluída no Corpo da Solicitação HTTP. Por exemplo, se o Handler de POST estiver esperando JSON na solicitação, adicione "Application/JSON" como o tipo MIME.

    Mostrar código: Selecione esta opção para exibir o código PL/SQL equivalente ao controle deslizante Criar Handler. Você pode copiar e executar esse código PL/SQL na planilha para executar a mesma ação que ocorre quando você clica em Criar no controle deslizante Criar Handler.

  3. Clique em Criar.

    O processador é exibido na página Processadores do modelo específico.

    Você pode testar o ponto final do serviço REST usando um cliente REST ou uma ferramenta de linha de comando, como cURL.

Editando um Handler de Recursos

Esta seção descreve como editar um handler de recursos.

  1. Na página Handlers, para um handler específico, clique em menu de contexto e, em seguida, clique em Detalhes.
  2. Edite os campos obrigatórios e clique em Salvar.

    Para obter uma descrição dos campos, consulte Criando um Handler de Recursos.

Excluindo um Handler de Recursos

Esta seção descreve como excluir um handler de recursos.

  1. Na página Handlers, para o handler específico, clique em menu de contexto e, em seguida, clique em Excluir.

    Você é solicitado a confirmar.

  2. Clique em OK para excluir.

Exibindo Detalhes do Processador de Recursos e Gerenciando Parâmetros

Você pode exibir detalhes do handler de recursos e gerenciar parâmetros na página Método HTTP.

Para navegar até esta página, para um handler específico, clique em menu de contexto e, em seguida, selecione Detalhes ou clique no nome do handler na view do cartão.

Na parte superior da página, o cartão do manipulador está disponível com opções de menu de contexto, como Editar e Excluir.

A página Método HTTP do Handler tem duas seções principais:

  • Um editor de código para executar o código-fonte SQL ou PL/SQL que foi definido no handler de recursos. Você pode executar o código, salvar, desfazer, refazer, fazer download e limpar a saída. Para obter mais informações sobre o editor, consulte Executando Instruções SQL no Code Editor.

    Os parâmetros implícitos usados nos handlers de serviço REST são exibidos em uma lista de rolagem no lado direito do editor. Consulte Parâmetros Implícitos

  • Uma seção para gerenciar parâmetros necessários para executar o método HTTP.

Por padrão, os parâmetros são exibidos na visualização de grade. Os atributos exibidos em um parâmetro na exibição de cartão são mostrados na figura a seguir.

As ações disponíveis no menu de contexto são:

Criando um Parâmetro

Esta seção descreve como criar um parâmetro para um handler de recursos.

  1. Na página Método HTTP do handler, clique em Criar Parâmetro.
  2. Insira os seguintes campos. Os campos com um asterisco (*) são obrigatórios:
    • Nome do Parâmetro: Informe o nome do parâmetro, conforme ele é nomeado no Modelo de URI ou no Cabeçalho HTTP. O nome define como o parâmetro é identificado na solicitação de entrada ou como o parâmetro é nomeado na Resposta.

    • Nome da Variável de Bind: Informe o nome do parâmetro, como será mencionado no SQL. Se NULO for especificado, o parâmetro não será vinculado.

    • Tipo de Origem: Selecione o tipo que será identificado se o parâmetro for originado no Modelo de URI ou no Cabeçalho HTTP.

    • Tipo de Parâmetro: Selecione o tipo nativo do parâmetro.

    • Método de Acesso: Selecione o método de acesso do parâmetro. Indica se o parâmetro é um valor de entrada, um valor de saída ou ambos.

    Mostrar código: Selecione esta opção para exibir o código PL/SQL equivalente ao controle deslizante Criar Parâmetro. Você pode copiar e executar esse código PL/SQL na planilha para executar a mesma ação que ocorre quando você clica em Criar no controle deslizante Criar Parâmetro.

  3. Clique em Criar.

    O parâmetro foi adicionado na seção de Parâmetros.

Editando um Parâmetro

Esta seção descreve como editar um parâmetro.

  1. Na seção Parâmetros, para o parâmetro específico, clique em menu de contexto e selecione Editar.
  2. Edite os campos obrigatórios e clique em Salvar.

    Para obter uma descrição dos campos, consulte Criando um parâmetro.

Excluindo um Parâmetro

Esta seção descreve como excluir um parâmetro.

  1. Na seção Parâmetros, para o parâmetro específico, clique em menu de contexto e selecione Deletar.

    Você é solicitado a confirmar.

  2. Clique em Sim para excluir.
Parâmetros Implícitos

Esta seção descreve os parâmetros implícitos na página Detalhes do Processador de Recursos. Esses parâmetros são adicionados automaticamente aos handlers de recursos.

Tabela 4-1 Parâmetros Implícitos

Nome Tipo Modo de Acesso Cabeçalho HTTP Descrição

:body

BLOB

IN

N/D

Especifica o corpo da solicitação como um BLOB temporário.

:body_text

CLOB

IN

N/D

Especifica o corpo da solicitação como um CLOB temporário.

:content_type

VARCHAR

IN

Content-Type

Especifica o tipo MIME do corpo da solicitação, conforme indicado pelo cabeçalho da solicitação Content-Type.

:current_user

VARCHAR

IN

N/D

Especifica o usuário autenticado para a solicitação. Se nenhum usuário for autenticado, o valor será definido como nulo.

:forward_location

VARCHAR

FORA DE

X-ORDS-FORWARD-LOCATION

Especifica o local em que o Oracle REST Data Services deve encaminhar uma solicitação GET para produzir a resposta para esta solicitação.

:fetch_offset

NUMBER

IN

N/D

Especifica o deslocamento baseado em zero da primeira linha a ser exibida em uma página.

:fetch_size

NUMBER

IN

N/D

Especifica o número máximo de linhas a serem recuperadas em uma página.

:page_offset

NUMBER

IN

N/D

Especifica o deslocamento de página baseado em zero em uma solicitação paginada.

Observação: O parâmetro The :page_offset está obsoleto. Use o parâmetro :row_offset.

:page_size

NUMBER

IN

N/D

Especifica o número máximo de linhas a serem recuperadas em uma página.

O parâmetro :page_size está obsoleto. Em vez disso, use :fetch_size parameter .

:row_offset

NUMBER

IN

N/D

Especifica o índice baseado em um da primeira linha a ser exibida em uma solicitação paginada.

:row_count

NUMBER

IN

N/D

Especifica o índice baseado em um da última linha a ser exibida em uma solicitação paginada.

:status_code

NUMBER

FORA DE

X-ORDS-STATUS-CODE

Especifica o código de status HTTP da solicitação.

Para obter mais informações sobre os parâmetros implícitos, consulte o Oracle REST Data Services Developer's Guide.

Usando Solicitações Pré-Autenticadas para Acessar Serviços RESTful do ORDS

Para acessar serviços RESTful protegidos, você pode criar e revogar solicitações pré-autenticadas.

As solicitações pré-autenticadas permitem acessar serviços RESTful do ORDS protegidos sem credenciais do usuário. Quando você cria a solicitação pré-autenticada, um URL exclusivo é gerado. Você pode fornecer esse URL a um usuário externo para interagir com a entidade RESTful específica usando ferramentas HTTP padrão.

Para obter mais informações sobre Solicitações Pré-Autenticadas, consulte Solicitações Pré-Autenticadas do Oracle REST Data Services no Oracle REST Data Services Developer's Guide.

Para navegar até a página Solicitações Pré-Autenticadas, você pode fazer o seguinte:

  • Na página Visão Geral, clique no mosaico Solicitações Pré-autenticadas.

  • Na barra de menus, expanda Segurança e selecione Solicitações Pré-Autenticadas.

Tópicos:

Criando uma Solicitação Pré-Autenticada

Para criar uma solicitação pré-autenticada para um handler existente:

  1. No menu de contexto de um handler existente, selecione Criar Nova Solicitação Pré-autenticada.

    O painel Criar Solicitação Pré-autenticada é exibido.

  2. No campo Expiração do Token, informe a duração da expiração do token em segundos.

    Selecione Mostrar Código para exibir o código-fonte subjacente para criar a solicitação pré-autenticada.

    Clique em Criar.

    O token, alias e o link relativo para acessar o recurso são exibidos. Você deve acompanhar o token e o alias, pois não poderá obter seus valores posteriormente. Se você esquecer os valores, poderá revogar o token e criar um novo novamente.

Exibindo uma Solicitação Pré-Autenticada

No menu de contexto de um handler existente, selecione Solicitações Pré-autenticadas e, em seguida, Detalhes.

As solicitações pré-autenizadas para o manipulador específico são exibidas.

Revogando uma Solicitação Pré-Autenticada

Para revogar a solicitação pré-autenticada de um handler:

  1. No menu de contexto de um handler existente, selecione Solicitações Pré-autenticadas e, em seguida, Detalhes.

    As solicitações pré-autenticadas para o processador específico são exibidas.

  2. No menu de contexto da solicitação pré-autenticada, selecione Revogar.

    Você é solicitado a confirmar.

  3. Clique em Confirmar para revogar a solicitação.

Exemplo: Inserindo um Registro usando um Handler POST

O exemplo a seguir ilustra como inserir um registro na tabela DEPT.

Pré-requisitos

  • Usando a planilha na página SQL, crie uma tabela DEPT.

    CREATE TABLE DEPT(  
      DEPTNO     number(2,0),  
      DNAME      varchar2(14),  
      LOC        varchar2(13),  
      CONSTRAINT PK_DEPT PRIMARY KEY (DEPTNO)  
    )
    
  • Crie um módulo denominado exemplo. Consulte Criando um Módulo de Recursos

  • Crie um modelo denominado emp/ para o módulo. Consulte Criando um Modelo de Recurso

Para inserir um registro:
  1. Na página Handlers, clique em Criar Handler.
  2. Insira os seguintes detalhes:
    • No campo Método, selecione POST.

    • No campo Tipo de Origem, selecione PL/SQL.

    • No campo Origem, informe o seguinte bloco PL/SQL:

      DECLARE  
         id number;
      BEGIN
          INSERT INTO DEPT (DEPTNO, DNAME, LOC) VALUES (:DEPTNO, :DEPTNAME, :DEPTLOC) RETURNING DEPTNO INTO id;
          :status_code := 201;
          :forward_location := id;
      END;
      

      em que

      • RETURNING DEPTNO INTO id retorna o valor atribuído a DEPTNO na variável id.

      • :status_code é um parâmetro implícito que recebe 201 para indicar que o recurso foi criado.

      • :forward_location é um parâmetro implícito que recebe o id que contém o valor de DEPTNO. Este parâmetro especifica o local para encaminhar uma solicitação GET para produzir a resposta para a solicitação POST.

    • Certifique-se de que a opção Ir para a página Handler após a criação esteja selecionada.

    • Na guia MIMEs Permitidos, selecione application/json na lista drop-down e clique em Adicionar +.

    • Clique em Criar.

    A página POST do Processador é exibida.

    Você pode testar o código-fonte clicando em Executar Instrução Executar Instrução na guia Origem.

  3. Crie um handler de recursos GET para produzir uma resposta para a solicitação POST.

    No módulo Exemplo, crie um modelo denominado emp/:id.

    Crie um handler de recursos GET em que Tipo de Origem seja Item de Coleta e Origem contenha a seguinte consulta:

    SELECT * FROM DEPT WHERE DEPTNO = :id
    
  4. Teste o ponto final do serviço RESTful usando o comando a seguir em cURL. Você pode copiar o URL (http://xyz.us.comp.com:1234/ords/pdbdba/example/emp) usando o ícone Copy to Clipboard no cartão do handler POST na parte superior.
    curl --location --request POST --header "Content-Type: application/json" 
    --data '{"DEPTNO": 54, "DEPTNAME": "HR", "DEPTLOC": "America" }' 'http://xyz.us.comp.com:1234/ords/pdbdba/example/emp/'

    A saída é:

    {"deptno":54,"dname":"HR","loc":"America","links":[{"rel":"collection",
    "href":"xyz.us.comp.com:1234/ords/pdbdba/example/emp/"}]}
  5. Na página SQL, verifique a tabela DEPT para ver se o novo registro foi inserido usando a seguinte instrução:
    SELECT * FROM DEPT;