Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...


Utilizando os exemplos acima, vamos segmentá-los conforme as 4 partes citadas:

  • Host
    http://127.0.0.1:8080/
    https://127.0.0.1:444/

  • Path Virtual
    /totvs

  • Endpoint
    /api/sample

  • Parâmetros via Query String
    ?param1=value

...

Agora, olhando parte a parte, conseguimos entender melhor de onde vem cada informação, vamos a elas:


HOST | (http://127.0.0.1:8080/) e (https://127.0.0.1:444/)

O Host é composto por 3 definições:

...

Porém, o [Hostname ou IP] são definidos pela Infraestrutura de rede e vai depender de muitas variações para saber o valor correto, pois é preciso saber se será somente um serviço interno, se estará publicado para a Internet, regras de redirecionamento de IPs, publicação de DNS. Essa definição não será alvo desse documento, sugerimos sempre envolver os profissionais de Infraestrutura e Segurança da Informação para auxiliá-lo nessa tarefa.


Protocolo | (http://) e (https://)

O Protocolo pode ser HTTP ou HTTPS, sendo o primeiro o protocolo simples e o segundo o protocolo utilizando criptografia, e nesse caso precisa de chaves de criptografias.

...

[HTTPSERVER]
Enable=1
Servers=HTTP_SERVER

[HTTP_SERVER]
port=8080

Note que as chaves SslCertificate e SslCertificateKey são inexistentes na configuração do server, sendo assim o REST já assume o protocolo HTTP.

...

[HTTPSERVER]
Enable=1
Servers=HTTP_SSL_SERVER

[HTTP_SSL_SERVER]
port=444
SslCertificate=SSL_certificate.crt
SslCertificateKey=SSL_certificate_key.pem

Note que nesse caso, as chaves SslCertificate e SslCertificateKey são informadas na configuração do server, sendo assim o REST já assume o protocolo HTTPS.
Importante saber que se não informar o caminho path completo, os arquivos precisam estar na pasta BIN onde é executado o appserver


Porta | (:8080) e (:444)

Olhando o exemplo acima, talvez você já tenha percebido onde se define a porta, mas iremos repetir para melhorar a fixação da informação.

...

[HTTPSERVER]
Enable=1
Servers=HTTP_SERVER

[HTTP_SERVER]
port=8080

Obviamente, para cada server é preciso definir uma porta diferente.
Para uma mesma execução do appserver, é possível subir diversos servers com portas distintas.

Para saber mais sobre definição de servers, acesse aqui.



Path Virtual | (/totvs)

O Path Virtual é muito útil para distinguir tipos de serviços, e ele é definido em cada LOCATION.

...

[HTTPSERVER]
Enable=1
Servers=HTTP_SSL_SERVER

[HTTP_SSL_SERVER]
locations=HTTP_ROOT

[HTTP_ROOT]
Path=/totvs

Para saber mais sobre definição de Locations, acesse aqui.



Endpoint | (/api/sample)

O Endpoint não faz parte da configuração do server, e sim já é a construção de cada funcionalidade que será disponibilizada, ou seja, é definida e criada via programação (código-fonte)

Para o REST do tlppCore, é possível definir de duas maneiras, via Annotation e via JSON e abaixo iremos mostrar ambas.


Annotation
@Get( endpoint="/api/sample" )
user function apiSample()
    ......
    
    oRest:setResponse(cJson)
return

Para saber mais sobre como criar serviços via Annotation, veja a documentação completa aqui.


JSON
user function sLoadURNs()

  local cGetPath := "/api/sample"

  jEndpoints := jsonObject():New()
  jEndpoints[cGetPath] := JsonObject():new()
  jEndpoints[cGetPath]['GET']              := JsonObject():new()
  jEndpoints[cGetPath]['GET']['ClassName'] := ""
  jEndpoints[cGetPath]['GET']['Function']  := "U_apiSample"
  jEndpoints[cGetPath]['GET']['EndPoint']  := {"api","sample"}

return jEndpoints

Para saber mais sobre como criar serviços via JSON, veja a documentação completa aqui.



Parâmetros via Query String | (param1=value)

...

Para saber mais sobre uso de Query String, acesse aqui.