• 0
Sign in to follow this  
andre machado

Como dar o OK STATUS HTTP 200 após recebimento da notificação ?

Question

Bom dia, eu estou recebendo as notificações e tratando o json normalmente, capturo o dado e levo ao banco de dados, faço o que tem de ser feito, porém, a notificação se repete mesmo após eu capturar o json,

Não sei que código deve ser utilizado para enviar o ok status 200 para o mercado livre parar de me notificar sobre aquele item,

O que ocorre é que, eu fico repetidamente tratando o mesmo item (dado)

 

Sei que o servidor deve retornar esse status, mas não sei como fazer!

Share this post


Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 0
5 hours ago, andre machado said:

Bom dia, eu estou recebendo as notificações e tratando o json normalmente, capturo o dado e levo ao banco de dados, faço o que tem de ser feito, porém, a notificação se repete mesmo após eu capturar o json,

Não sei que código deve ser utilizado para enviar o ok status 200 para o mercado livre parar de me notificar sobre aquele item,

O que ocorre é que, eu fico repetidamente tratando o mesmo item (dado)

 

Sei que o servidor deve retornar esse status, mas não sei como fazer!

Sem saber a linguagem que você usa é difícil te dar uma resposta. Se for php é isso

header('X-PHP-Response-Code: 200', true, 200);

Mas tenha em mente que alguns eventos enviam varias notificações seguidas . Uma nova Order gera uns 4, no minimo

Share this post


Link to post
Share on other sites
  • 0
16 minutes ago, gbandoni said:

Sem saber a linguagem que você usa é difícil te dar uma resposta. Se for php é isso

header('X-PHP-Response-Code: 200', true, 200);

Mas tenha em mente que alguns eventos enviam varias notificações seguidas . Uma nova Order gera uns 4, no minimo

Oi, é php sim.

Tá, mas eu coloco isso onde. em baixo do codigo que recebo o json numa variavel ?

E essa resposta se dará ao recebimento dessa notificação em específica, para cada terá este retorno é isso ?

Por que não vi parametros ou onde colocar, eu não faço ideia como se usa a resposta do ok, mas tenho um codigo limpo apenas recebendo o json, e incluindo os dados no meu banco de dados para depois tratar notificação por notificação, acontece que está entrando várias repetidas, no qual quero evitar dando o ok quando recebido.

Uma alternativa foi dar um unique id no banco para esse dado, mas, não é o correto.

 

Share this post


Link to post
Share on other sites
  • 0
12 hours ago, andre machado said:

Oi, é php sim.

Tá, mas eu coloco isso onde. em baixo do codigo que recebo o json numa variavel ?

Isso é uma tratativa básica de requisições via http você emite uma resposta quando acabou o que tem para fazer em seu script. Lembrando que tu nao pode mandar header depois de gerou algum output (echo). No site do php tu acha mais exemplos e documentação. Se seu php é maior que 5.4 pode usar http_response_code(200) que faz a mesma coisa só que de maneira mais simples

E essa resposta se dará ao recebimento dessa notificação em específica, para cada terá este retorno é isso ?

Naturalmente

Por que não vi parametros ou onde colocar, eu não faço ideia como se usa a resposta do ok, mas tenho um codigo limpo apenas recebendo o json, e incluindo os dados no meu banco de dados para depois tratar notificação por notificação, acontece que está entrando várias repetidas, no qual quero evitar dando o ok quando recebido.

Uma alternativa foi dar um unique id no banco para esse dado, mas, não é o correto.

Eu não vejo nada de errado de dar um id para essas requisições . Mas eu acho que tu não pegou a ideia desse fluxo. uma order pode sofrer n alteracoes num curto espaço de tempo e em condições normais de temperatura e pressão você vai receber várias notificações seguidas de order . Um exemplo de uma order do mes passado

id    user_id    resource    resource_id    recurso    lido    hora    
XXXXX11826    256XXXXXX    orders    196XXXXXXX    {"resource":"/orders/196XXXXXXX","user_id":256XXXX...    1    2019-03-16 22:30:32
XXXXX11827    256XXXXXX    orders    196XXXXXXX    {"resource":"/orders/196XXXXXXX","user_id":256XXXX...    1    2019-03-16 22:30:34
XXXXX11829    256XXXXXX    orders    196XXXXXXX    {"resource":"/orders/196XXXXXXX","user_id":256XXXX...    1    2019-03-16 22:30:35
XXXXX95550    256XXXXXX    orders    196XXXXXXX    {"resource":"/orders/196XXXXXXX","user_id":256XXXX...    1    2019-03-20 20:21:41

Em 5 segundos foram 3 mas pq provavelmente foi criada , depois adicionaram dados de pagamento e depois adicionaram dados de shipment . Se tu só quiser manter um unico registro vai perder o lastro das coisas e vai ter um problema sério de overload no banco de dados . Eu recebo meio milhão de notificação de items por dia . Imagina se eu fizesse 500 mil querys para verificar se o registro ja existe , ou pior , fazer um insert or update para toda requisição que chega

Share this post


Link to post
Share on other sites
  • 0

O que eu faço então?
 

No momento to dando insert e update em cada requisição, a diferenca é que, nao deixo o banco repetir, uso um unique_id, e, executo com cron a cada 1 minuto.

Mas posteriormente o cron executar vem denovo aquela requisição e um novo update é feito (no mesmo resource)

Como reaproveitar essas requisições?

Share this post


Link to post
Share on other sites
  • 0

Quem dá esta resposta é o servidor HTTP.
Se ninguém mexeu na configuração e se sua página rodar direitinho ele responderá 200.

Se usar a informação apontada pelo gbandoni você estará forçando uma resposta.

Onde vai o header?? no header! pode colocar em outro lugar da página, claro, mas cuidado com regras de header, isto é coisa de PHP, não é dívida de API.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this