Histórico da Página
...
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.
...
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.
...
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.
...
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)
Os parâmetros via Query String não são definidos pela configuração e nem diretamente definidos via criação do serviço.
...