Mudanças entre as edições de "PHSYS API"
(Criou página com '==='''Conceito'''=== O sistema PHSYS é baseado em um modelo de requisições REST, permitindo receber requisições de diversas formas. Ele foi desenvolvido utilizando sessõ...') |
|||
Linha 9: | Linha 9: | ||
==='''Estrutura do JSON de Requisição'''=== | ==='''Estrutura do JSON de Requisição'''=== | ||
− | As requisições devem ser enviadas via método POST. Para identificação de qual processo o servidor deve | + | As requisições devem ser enviadas via método POST. Para identificação de qual processo o servidor deve executar, é necessário informar qual a classe e qual o procedimento será executado. Dados como ID, empresa e parâmetros são opcionais, mas devem ser informados dependendo do processo que será executado pelo servidor. |
− | Os parâmetros | + | Os parâmetros a serem enviados abrangem nove tipos distintos, é importante observar a formatação esperada por cada um deles. Esses tipos são: |
+ | *string | ||
+ | *integer | ||
+ | *largeint | ||
+ | *stream | ||
+ | *boolean '''[ true | false ]''' | ||
+ | *time '''[ hh:mm:ss ]''' | ||
+ | *date '''[ yyyy-mm-dd ]''' | ||
+ | *datetime '''[ yyyy-mm-dd hh:mm:ss ]''' | ||
+ | *float '''[ 0.00000000 ]''' | ||
− | + | Sendo assim, O formato do JSON no corpo (body) da requisição deve possuir a seguinte estrutura: | |
{"Classe": "TPHSPedido", | {"Classe": "TPHSPedido", | ||
Linha 24: | Linha 33: | ||
"Tipo": "string", | "Tipo": "string", | ||
"Valor": "Isso é um teste" | "Valor": "Isso é um teste" | ||
− | + | }, | |
{ | { | ||
"Nome": "Numero", | "Nome": "Numero", | ||
"Tipo": "integer", | "Tipo": "integer", | ||
"Valor": 1 | "Valor": 1 | ||
− | + | } | |
] | ] | ||
} | } | ||
Linha 35: | Linha 44: | ||
'''Parâmetros:''' | '''Parâmetros:''' | ||
− | '''Classe:''' Nome da classe a ser invocada no servidor, classe pode ser enviada no parametros também. Exemplo {"Parametros": [{“Classe”:”TPHSPedido”}]}. | + | *'''Classe:''' Nome da classe a ser invocada no servidor, classe pode ser enviada no parametros também. Exemplo {"Parametros": [{“Classe”:”TPHSPedido”}]}. |
− | '''Procedimento:''' Nome do procedimento a ser executado na classe, procedimento pode ser enviada no parametros também. Exemplo {"Parametros": [{“Procedimento”:”Imprimir”}]}. | + | *'''Procedimento:''' Nome do procedimento a ser executado na classe, procedimento pode ser enviada no parametros também. Exemplo {"Parametros": [{“Procedimento”:”Imprimir”}]}. |
− | '''ID (Opcional):''' Identificador único associado à requisição. | + | *'''ID (Opcional):''' Identificador único associado à requisição. |
− | '''Empresa (Opcional):''' Identificador da empresa relacionada à requisição. | + | *'''Empresa (Opcional):''' Identificador da empresa relacionada à requisição. |
− | '''Parametros (Opcional):''' Informações adicionais resultantes do processamento. | + | *'''Parametros (Opcional):''' Informações adicionais resultantes do processamento. |
− | '''Nome (Obrigatório quando Parametros):''' Identificação do parâmetro. | + | *'''Nome (Obrigatório quando Parametros):''' Identificação do parâmetro. |
− | '''Tipo (Obrigatório quando Parametros):''' Tipo de dado associado ao parâmetro. | + | *'''Tipo (Obrigatório quando Parametros):''' Tipo de dado associado ao parâmetro. |
− | '''Valor (Obrigatório quando Parametros):''' Valor do parâmetro, podendo ser uma string ou um stream (no caso do parâmetro "Arquivo"). | + | *'''Valor (Obrigatório quando Parametros):''' Valor do parâmetro, podendo ser uma string ou um stream (no caso do parâmetro "Arquivo"). |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==='''Estrutura do JSON de Resposta'''=== | ==='''Estrutura do JSON de Resposta'''=== | ||
Linha 119: | Linha 83: | ||
'''Parâmetros:''' | '''Parâmetros:''' | ||
− | '''Parametros:''' Informações adicionais resultantes do processamento. | + | *'''Parametros:''' Informações adicionais resultantes do processamento. |
− | '''Nome:''' Identificação do parâmetro. | + | *'''Nome:''' Identificação do parâmetro. |
− | '''Tipo:''' Tipo de dado associado ao parâmetro. | + | *'''Tipo:''' Tipo de dado associado ao parâmetro. |
− | '''Valor:''' Valor do parâmetro, podendo ser uma string ou um stream (no caso do parâmetro "Arquivo"). | + | *'''Valor:''' Valor do parâmetro, podendo ser uma string ou um stream (no caso do parâmetro "Arquivo"). |
− | ===''' | + | ==='''GetSessao e GetMetodo'''=== |
− | |||
− | + | A comunicação entre o cliente e o servidor é estabelecida por meio da operação GetSessao. Esta operação é essencial para criar uma sessão dedicada ao usuário que está solicitando a requisição. A sessão é automaticamente encerrada e destruída se não houver requisições ao servidor dentro de uma hora. | |
− | GetSessao | + | https://localhost:211/GetSessao?Usuario=usuario@BaseDados&SENHA=Senha. |
− | + | O corpo da resposta do servidor ao GetSessao contém o código da sessão, o qual deve ser armazenado para uso futuro. Este código será posteriormente adicionado à requisição GetMetodo. | |
+ | '''Exemplo de Requisição GetSessao:''' | ||
+ | GET https://localhost:211/GetSessao?Usuario=usuario@BaseDados&SENHA=Senha | ||
− | |||
− | ''' | + | ''' Exemplo de Resposta do Servidor para o GetSessao:''' |
− | + | { | |
− | + | "SessaoID": "1234567890abcdef1234567890abcdef" | |
− | + | } | |
− | |||
− | + | Por meio da operação GetMetodo, é possível acionar diversas funcionalidades do sistema, como imprimir um pedido ou liberar um pedido para aprovação. No entanto, é imperativo que esta requisição seja feita utilizando uma sessão válida, obtida previamente por meio do GetSessao. Caso contrário, uma mensagem de erro será retornada, solicitando a obtenção de uma nova sessão. | |
− | + | https://localhost:211/GetSessao?Usuario=usuario@BaseDados&SENHA=Senha | |
− | |||
− | |||
− | |||
− | |||
− | |||
+ | '''Exemplo de Requisição GetMetodo:''' | ||
+ | GET https://localhost:211/GetMetodo?SessaoID=1234567890abcdef1234567890abcdef | ||
− | + | Em resumo, a operação GetSessao é o ponto inicial para estabelecer uma comunicação, criando uma sessão que é posteriormente utilizada na requisição GetMetodo para executar funcionalidades do sistema. |
Edição das 17h30min de 27 de novembro de 2023
Índice
Conceito
O sistema PHSYS é baseado em um modelo de requisições REST, permitindo receber requisições de diversas formas. Ele foi desenvolvido utilizando sessões, o que significa que é necessário fornecer um identificador de sessão (semelhante a um token ou secret key) para cada requisição direta ao sistema.
Uma integração REST é uma forma de comunicação entre sistemas que segue os princípios arquiteturais da web. Ela permite que diferentes sistemas se conectem e troquem informações de forma eficiente e padronizada.
Portanto, para enviar requisições ao servidor, é necessário primeiro solicitar um ID de sessão. Com esse ID de sessão, será possível realizar solicitações e enviar dados para o servidor.
A comunicação é baseada em requisições utilizando um formato JSON padronizado.
Estrutura do JSON de Requisição
As requisições devem ser enviadas via método POST. Para identificação de qual processo o servidor deve executar, é necessário informar qual a classe e qual o procedimento será executado. Dados como ID, empresa e parâmetros são opcionais, mas devem ser informados dependendo do processo que será executado pelo servidor.
Os parâmetros a serem enviados abrangem nove tipos distintos, é importante observar a formatação esperada por cada um deles. Esses tipos são:
- string
- integer
- largeint
- stream
- boolean [ true | false ]
- time [ hh:mm:ss ]
- date [ yyyy-mm-dd ]
- datetime [ yyyy-mm-dd hh:mm:ss ]
- float [ 0.00000000 ]
Sendo assim, O formato do JSON no corpo (body) da requisição deve possuir a seguinte estrutura:
{"Classe": "TPHSPedido", "Procedimento": "Imprimir", "ID": 20, "Empresa": 1, “Parametros”:[ { "Nome": "Texto", "Tipo": "string", "Valor": "Isso é um teste" }, { "Nome": "Numero", "Tipo": "integer", "Valor": 1 } ] }
Parâmetros:
- Classe: Nome da classe a ser invocada no servidor, classe pode ser enviada no parametros também. Exemplo {"Parametros": [{“Classe”:”TPHSPedido”}]}.
- Procedimento: Nome do procedimento a ser executado na classe, procedimento pode ser enviada no parametros também. Exemplo {"Parametros": [{“Procedimento”:”Imprimir”}]}.
- ID (Opcional): Identificador único associado à requisição.
- Empresa (Opcional): Identificador da empresa relacionada à requisição.
- Parametros (Opcional): Informações adicionais resultantes do processamento.
- Nome (Obrigatório quando Parametros): Identificação do parâmetro.
- Tipo (Obrigatório quando Parametros): Tipo de dado associado ao parâmetro.
- Valor (Obrigatório quando Parametros): Valor do parâmetro, podendo ser uma string ou um stream (no caso do parâmetro "Arquivo").
Estrutura do JSON de Resposta
O servidor responderá com um JSON, contendo todos os parâmetros processados, caso seja solicitado um arquivo como PDF, o servidor responderá com um parâmetro STREAM, contendo em Base64 todo o conteúdo do PDF. O JSON segue a seguinte estrutura:
{"Parametros": [ { "Nome": "Parametros", "Tipo": "string", "Valor": "" }, { "Nome": "Filtro", "Tipo": "string", "Valor": "" }, { "Nome": "Arquivo", "Tipo": "stream", "Valor": "JVBERi0xLjcNCiXi48/....." } ] }
Parâmetros:
- Parametros: Informações adicionais resultantes do processamento.
- Nome: Identificação do parâmetro.
- Tipo: Tipo de dado associado ao parâmetro.
- Valor: Valor do parâmetro, podendo ser uma string ou um stream (no caso do parâmetro "Arquivo").
GetSessao e GetMetodo
A comunicação entre o cliente e o servidor é estabelecida por meio da operação GetSessao. Esta operação é essencial para criar uma sessão dedicada ao usuário que está solicitando a requisição. A sessão é automaticamente encerrada e destruída se não houver requisições ao servidor dentro de uma hora.
https://localhost:211/GetSessao?Usuario=usuario@BaseDados&SENHA=Senha.
O corpo da resposta do servidor ao GetSessao contém o código da sessão, o qual deve ser armazenado para uso futuro. Este código será posteriormente adicionado à requisição GetMetodo.
Exemplo de Requisição GetSessao:
GET https://localhost:211/GetSessao?Usuario=usuario@BaseDados&SENHA=Senha
Exemplo de Resposta do Servidor para o GetSessao:
{ "SessaoID": "1234567890abcdef1234567890abcdef" }
Por meio da operação GetMetodo, é possível acionar diversas funcionalidades do sistema, como imprimir um pedido ou liberar um pedido para aprovação. No entanto, é imperativo que esta requisição seja feita utilizando uma sessão válida, obtida previamente por meio do GetSessao. Caso contrário, uma mensagem de erro será retornada, solicitando a obtenção de uma nova sessão.
https://localhost:211/GetSessao?Usuario=usuario@BaseDados&SENHA=Senha
Exemplo de Requisição GetMetodo:
GET https://localhost:211/GetMetodo?SessaoID=1234567890abcdef1234567890abcdef
Em resumo, a operação GetSessao é o ponto inicial para estabelecer uma comunicação, criando uma sessão que é posteriormente utilizada na requisição GetMetodo para executar funcionalidades do sistema.