Introdução
A personalização de headers em APIs REST é essencial para atender a requisitos específicos de integração ou conformidade.
No Datasul REST, essa funcionalidade pode ser implementada de forma eficiente utilizando a classe JsonAPIResponse em conjunto com objetos JSON.
Essa abordagem permite adicionar headers personalizados, como o Content-Type, diretamente ao JSON de resposta, mantendo a consistência com as práticas padrão e oferecendo flexibilidade para configurações adicionais.
Implementação
Abaixo está o exemplo de implementação para configurar um header Content-Type com o valor application/custom.content.type+json:
PROCEDURE piCustom:
DEFINE INPUT PARAMETER jsonInput AS JSONObject NO-UNDO.
DEFINE OUTPUT PARAMETER jsonOutput AS JSONObject NO-UNDO.
DEFINE VARIABLE oResponse AS JsonAPIResponse NO-UNDO.
DEFINE VARIABLE oPayload AS JSONObject NO-UNDO.
DEFINE VARIABLE oHeaders AS JSONObject NO-UNDO.
/* Criação do payload */
ASSIGN oPayload = NEW JsonObject().
oPayload:ADD("response", "OK").
/* Criação da resposta padrão usando JsonAPIResponse */
ASSIGN oResponse = NEW JsonAPIResponse(oPayload).
ASSIGN jsonOutput = oResponse:createJsonResponse().
/* Adição dos headers personalizados */
ASSIGN oHeaders = NEW JsonObject().
oHeaders:ADD("Content-Type", "application/custom.content.type+json").
jsonOutput:ADD("headers", oHeaders).
END PROCEDURE.
Esse deve ser o padrão do JSON a ser seguido para envio à camada middleware, permitindo que possamos personalizar os headers:
{
"payload": {
"key": "value"
},
"headers": {
"Content-Type": "application/custom.content.type+json"
}
}
Detalhes da Implementação
- Uso de
JsonAPIResponse: O métodocreateJsonResponseé utilizado para criar a estrutura básica da resposta, incluindo o payload. - Adição de Headers: A personalização dos headers é feita por meio da criação de um objeto
headerse sua inclusão no JSON final. - Flexibilidade: Outros headers podem ser adicionados da mesma forma, além do
Content-Type, conforme as necessidades da API.
Um exemplo completo acompanha a documentação, contendo o código-fonte, um compilado de teste e uma coleção do Postman para validação. Para testar, basta adicionar a pasta content ao propath, e nas requisições do postman, ajustar o host, a porta e as credenciais ao ambiente desejado.

