É possível adicionar recursos REST da sua extensão para serem servidos pelo CIS.
Para isso basta criar um plugin para o CIS e implementar a função TratarREST
(C#/DLL) / tratar_REST
(Python).
Como funciona?
Todos os recursos do CIS funcionam sob o caminho /v1
.
Qualquer caminho diferente deste pode ser utilizado pelo plugin.
Por padrão, haverá um único caminho com o nome do plugin:
http://servidor-cis:porta-cis/NomeDoPlugin/qualquer_recurso/
Contudo, é possível definir um ou mais caminhos implementando a função ObterDadosREST
(C#/DLL) / obter_dados_REST
(Python):
http://servidor-cis:porta-cis/Caminho1/qualquer_recurso/
http://servidor-cis:porta-cis/Caminho2/qualquer_recurso/
Todos os recursos dentro dos caminhos especificados serão encaminhandos para o plugin.
def tratar_REST(dados): request = json.loads(dados) if request['URI'].startswith('/Caminho1/teste1/'): if request['Command'] == 'GET': conteudo = json.dumps({'teste': True}) return json.dumps(dict(Content=conteudo, StatusCode=200)) if request['URI'].startswith('/Caminho2/sub_caminho/'): if request['Command'] == 'GET': conteudo = json.dumps({'teste': True}) return json.dumps(dict(Content=conteudo, StatusCode=200)) return None def obter_dados_REST(): return json.dumps({'caminhos': ['Caminho1', 'Caminho2']})
Importante!
- A URL e os parâmetros devem ser validados pelo plugin e se não forem reconhecidos o plugin deve retornar
Null
(C#) ouNone
(Python). - No JSON retornado o campo
Content
sempre deverá ser um texto. - Os nomes dos caminhos devem ser escolhidos com cuidado para evitar conflito com caminhos definidos por outros plugins. Evite nomes genéricos ou não relacionados ao produto/empresa (por exemplo, 'cadastro', 'api', 'servico' não são boas escolhas). Contudo, os caminhos internos são de uso livre pois estão sob domínio do plugin, ex:
/ACME/cadastro