No meu trabalho em um tipo de serviço ao cliente / função de suporte, muitas vezes tenho que verificar os arquivos de log de uma das nossas interfaces REST (formato JSON).
Este registro contém as solicitações feitas em um dos nossos serviços da web. Os dados são estatisticamente interessantes para nós, então em algum momento um de nossos desenvolvedores fez uma ferramenta que extraiu dados do log e retornou um arquivo CSV que pode ser usado para manipulação de dados.
No entanto, um dos nossos outros clientes (em outro servidor) usa o serviço da Web de maneira um pouco diferente, o que faz com que a ferramenta não consiga processar os dados. O problema é que nossos desenvolvedores estão muito ocupados e isso não é um problema de alta prioridade. Ainda assim, parece-me que isso deve ser bastante simples, então eu gostaria de causar uma boa impressão e talvez construir isso sozinho.
Exemplo de entrada (JSON):
2017-01-31 05:42:43:587 -> 2017-01-31 05:42:43:587:1536:GET /v1/webservice_path.../ABC123 X-Api-Key:xyz
2017-01-31 05:42:43:587 <- 2017-01-31 05:42:43:587:1536:OK:{
"parameter 1": true,
"parameter 2": true
Exemplo de saída (CSV):
ID;Parameter 1;Parameter 2
ABC123;true;true
Eu tenho um talento técnico , mas absolutamente nenhum treinamento formal em codificação além dos cursos básicos de HTML, Python e Ruby na CodeAcademy.
Esta é realmente uma questão de duas partes:
Eu quero construir a ferramenta sozinho; não copie em uma solução que um de vocês poderá fazer em minutos. Uma razão para isso é que o uso do nosso serviço da web varia de cliente para cliente, então outro cliente pode usá-lo dessa maneira (que eu também quero estar preparado):
2017-01-31 05:42:43:587 -> 2017-01-31 05:42:43:587:1536:GET /v1/webservice_path.../ ID_1:ABC123 ID2_:QWE456 X-Api-Key:xyz
2017-01-31 05:42:43:587 <- 2017-01-31 05:42:43:587:1536:OK:{
"parameter 1": true,
"parameter 2": true
"parameter 3": true
(por favor, note que em vez de colocar o pedido diretamente após /, o pedido é inserido no campo "ID_1" e um campo extra opcional "ID_2" também contém dados)