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
headers
e 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.