Ir para conteúdo
Good

API - Como funciona

Recommended Posts

Boa tarde,

eu estou estudando como funciona um sistema de API  + Postback e estou com dúvidas...

A linguagem mais prática para isto é NodeJS? 

 

Por exemplo, vou liberar permissão para os usuários pegarem informações da conta de cadastro dele.. E por exemplo, quando eles atualizarem as informações de cadastro como nome, cidade, estado,  etc.. o sistema deve enviar no mesmo momento um postback com as informações..

 

Como vocês fariam este sistema? Os grandes portais utilizam como? Tipo o mercado livre, google...

 

aguardo resposta, 

att

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Good Boa Tarde!

 

1 hora atrás, Good disse:

eu estou estudando como funciona um sistema de API  + Postback e estou com dúvidas...

A linguagem mais prática para isto é NodeJS? 

 

Bom o Node.js não é uma linguagem, e sim um interpretador de javascript, ele expande o uso do javascript. 

Em questão de praticidade o PHP é mais solido e confiável, ele também tem uma das comunidade mais ativas.

 

Para você entender como funciona um sistema de API Web, você primeiro deve entender o que é front-end e back-end. Eu não vou explicar, você acha muitos trópicos falando sobre.

 

1 hora atrás, Good disse:

Como vocês fariam este sistema? Os grandes portais utilizam como? Tipo o mercado livre, google...

 

Eu faria usando, e os sistemas utilizam uma arquitetura de software. Uma bem famosa é o MVC.

 

2 horas atrás, Good disse:

Por exemplo, vou liberar permissão para os usuários pegarem informações da conta de cadastro dele.. E por exemplo, quando eles atualizarem as informações de cadastro como nome, cidade, estado,  etc.. o sistema deve enviar no mesmo momento um postback com as informações..

 

Depois dá uma olhada em XMLHTTPRequest.

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 minutos atrás, gabrielms disse:

@Good Boa Tarde!

 

 

Bom o Node.js não é uma linguagem, e sim um interpretador de javascript, ele expande o uso do javascript. 

Em questão de praticidade o PHP é mais solido e confiável, ele também tem uma das comunidade mais ativas.

 

Para você entender como funciona um sistema de API Web, você primeiro deve entender o que é front-end e back-end. Eu não vou explicar, você acha muitos trópicos falando sobre.

 

 

Eu faria usando, e os sistemas utilizam uma arquitetura de software. Uma bem famosa é o MVC.

 

 

Depois dá uma olhada em XMLHTTPRequest.

 

 

Boa tarde @gabrielms, kkkk esqueci de falar.. não sou novato... E estou pedindo ajuda para saber como vocês fariam, o que seria de fato um sistema profissional, para uso de grande fluxo..

Mas aqui vai minhas dúvidas:

- No nodejs, dá para criar sites, conectar com banco de dados, etc. Certo? Tipo, bastaria eu montar html e através de socket, há o envio de dados, e aí no front faria o tratamento de dados e exibiria no html as informações desejadas.. correto? Enfim, esta parte não importa muito.

 

Então... Por exemplo, o sistema de postback, no meu sistema (o painel) provavelmente vai ser desenvolvido em PHP+MySQL... E aí, eu criaria um servidor em  nodejs para receber sempre as atualizações vindas do painel, ou seja, um formulário após ser salvado seria enviado uma requisição com os dados modificados e aí o nodejs faria a distribuição para todas as URLs cadastradas, e posteriormente eu gravaria no meu banco de dados o status da distribuição para as URLs (se é status 200, 404, etc).

 

E o uso da API poderia ser consultada através de CURL + PHP, e outras linguagens (assim como disponibilizada diversos exemplos).. E a url que seria puxada, seria tipo um fluxo criado no nodejs.. Que retornaria informações do banco de dados de acordo com o que o usuário solicitar... O importante é criar uma página web central que retornaria dados de acordo com o que o usuário solicitar, independente de qual linguagem ele quer fazer o tratamento dos dados.

 

Minha dúvida principal é se esta estrutura é a correta... Se tem outras linguagens melhores para fazer o trabalho de PostBack + API

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Good 

 

32 minutos atrás, Good disse:

Então... Por exemplo, o sistema de postback, no meu sistema (o painel) provavelmente vai ser desenvolvido em PHP+MySQL... E aí, eu criaria um servidor em  nodejs para receber sempre as atualizações vindas do painel, ou seja, um formulário após ser salvado seria enviado uma requisição com os dados modificados e aí o nodejs faria a distribuição para todas as URLs cadastradas, e posteriormente eu gravaria no meu banco de dados o status da distribuição para as URLs (se é status 200, 404, etc).

 

Pra que N motivos você teria um server PHP e um em Node.js? Se sua aplicação e desenvolvida em php não tem nenhum motivo para criar um server em Node.js. O único motivo para isso, seria o uso do socket web para trabalhar em tempo real.

 

32 minutos atrás, Good disse:

E o uso da API poderia ser consultada através de CURL + PHP, e outras linguagens (assim como disponibilizada diversos exemplos).. E a url que seria puxada, seria tipo um fluxo criado no nodejs.. Que retornaria informações do banco de dados de acordo com o que o usuário solicitar... O importante é criar uma página web central que retornaria dados de acordo com o que o usuário solicitar, independente de qual linguagem ele quer fazer o tratamento dos dados.

 

Os protocolos de requisição como HTTP, GET e POST são os mesmo para qualquer linguagem, se você quer criar uma API para se comunicar com diversas aplicações, basta criar um server para receber essas requisições e enviar de acordo com cada requisição.

Compartilhar este post


Link para o post
Compartilhar em outros sites
13 minutos atrás, gabrielms disse:

@Good 

 

 

Pra que N motivos você teria um server PHP e um em Node.js? Se sua aplicação e desenvolvida em php não tem nenhum motivo para criar um server em Node.js. O único motivo para isso, seria o uso do socket web para trabalhar em tempo real.

 

 

Os protocolos de requisição como HTTP, GET e POST são os mesmo para qualquer linguagem, se você quer criar uma API para se comunicar com diversas aplicações, basta criar um server para receber essas requisições e enviar de acordo com cada requisição.

 

@gabrielms isso, exatamente... isso que eu quero chegar.. mas eu estou pensando em nível de eficiência... Pq eu pretendo fazer lançamento, e será um sistema com milhares de requisições diárias.. Entende? Por exemplo, com nodejs eu poderia manter armazenado temporariamente informações para que evite o uso de consulta ao banco de dados..

Tudo tem que ser pensado de forma a ser executada mais rápido possível.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Good 

 

1 hora atrás, Good disse:

@gabrielms isso, exatamente... isso que eu quero chegar.. mas eu estou pensando em nível de eficiência... Pq eu pretendo fazer lançamento, e será um sistema com milhares de requisições diárias.. Entende? Por exemplo, com nodejs eu poderia manter armazenado temporariamente informações para que evite o uso de consulta ao banco de dados..

Tudo tem que ser pensado de forma a ser executada mais rápido possível.

Isso você pode fazer usando qualquer linguagem, um bom exemplo e o Laravel(Framework em PHP) que armazenando session em arquivo.

 

o PHP e o mysql suportam muita coisa com apenas 128MB de memorial. O que você pode fazer é melhor os recursos para ambos e colocar um sistema de múltiplos servidores com um sistema de segurança ante DDOS. E também projetar bem o seu banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites
15 horas atrás, gabrielms disse:

@Good 

 

Isso você pode fazer usando qualquer linguagem, um bom exemplo e o Laravel(Framework em PHP) que armazenando session em arquivo.

 

o PHP e o mysql suportam muita coisa com apenas 128MB de memorial. O que você pode fazer é melhor os recursos para ambos e colocar um sistema de múltiplos servidores com um sistema de segurança ante DDOS. E também projetar bem o seu banco de dados.

massa.. valeu!! Vou aguardar outras opiniões também

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
    • Por Thiago Duarte
      Oi, gostaria de arrastar imagem e ao soltar formar bloco html, meu bloco de html ficaria com nome, content-1.html, content-2.html, etc
       
      Alguem pode me ajudar?
    • Por belann
      Olá!
       
      Estou tentando iniciar uma Api de rotas no nodejs é da o seguinte erro:
      C:\Users\arifu\ntask-api\node_modules\consign\lib\consign.js:121
      /**
            ^
      Error [ERR_REQUIRE_ESM]: require() of ES Module C:\Users\l\ntask-api\models\tasks.js from C:\Users\arifu\ntask-api\node_modules\consign\lib\consign.js not supported.
      tasks.js is treated as an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which declares all .js files in that package scope as ES modules.
      Instead either rename tasks.js to end in .cjs, change the requiring code to use dynamic import() which is available in all CommonJS modules, or change "type": "module" to "type": "commonjs" in C:\Users\l\ntask-api\package.json to treat all .js files as CommonJS (using .mjs for all ES modules instead).
          at Object.newLoader [as .js] (C:\Users\l\ntask-api\node_modules\pirates\lib\index.js:121:7)
          at Consign.into (C:\Users\l\ntask-api\node_modules\consign\lib\consign.js:231:15)
          at file:///C:/Users/l/ntask-api/index.js:11:3 {
        code: 'ERR_REQUIRE_ESM'
       
      Ja troquei type: module para type: commonjs e dá outros erros como na importação do express.
      package.json
       
      {   "name": "ntask-api",   "version": "1.0.0",   "description": "API de gestão de tarefas",   "main": "index.js",   "type": "module",   "scripts": {     "start": "babel-node index.js"   },   "author": "l",   "dependencies": {     "@babel/cli": "^7.0.0",     "@babel/core": "^7.0.0",     "@babel/preset-env": "^7.0.0",     "consign": "^0.1.2",     "express": "^4.18.2"   },   "devDependencies": {     "@babel/core": "^7.0.0",     "@babel/node": "^7.0.0",     "@babel/preset-env": "^7.23.3"   } }  
      index.js
      import express from 'express'; import consign from 'consign';   const app = express();   consign()  .include("models")  .then("libs/middlewares.js")  .then("routes")  .then("libs/boot.js")  .into(app);
    • Por belann
      Olá!
       
      Estou fazendo o upload de arquivos com fetch dessa forma
      fetch(url, {
              method: 'POST',
              headers: {'Content-Type': 'multipart/form-data',},
              body: formData 
          }).catch((error) => (console.log("Problemas com o Upload"), error));
       
      estou usando input type=file
      e criando uma const formData = new FormData(); 
      mas não faz e não dá nenhum erro.
      estou fazendo o upload com a url="http://localhost/dashboard/dados".
    • Por joeythai
      Boa tarde pessoal,
       
      Eu criei um formulário em que tenho 3 interações: evento click, change e uma chamada ajax. No evento on change ("select#removal_table_from" )eu faço uma chamada ajax onde eu passo como parametro o id do item selecionado e construo uma tabela dinamica com o próprio javascript, após isto, tenho um input em que o usuario coloca um valor de percentual para que eu possa preencher em 3 colunas da tabela que foi criada dinamicamente: moto_atualizado, carro_atualizado e caminhao_atualizado, até aí tudo bem, o codigo está fazendo isso, porém, como a tabela é criada dinamicamente eu preciso de alguma forma enviar o arrayData para meu backend mas quando faço o calculo dentro do loop apos resposta do meu ajax, os valores desses 3 campos chegam como null, não sei se é possível fazer o que pretendo ou se é ainda não sei como faz
       
      <code>
           $(document).ready(function (event) {   let arrayData = []; let percentage; let removal_vehicle; let removal_motorcycle; let removal_tuck; let apply_removal = $('#apply_removal');   // apply_removal.on('click', function () { // percentage = $('#percentage').val();   // $('.table-body tr').each(function () {   // let veiculo = $(this).find('.veiculo').text(); // let moto = $(this).find('.moto').text(); // let caminhao = $(this).find('.caminhao').text();   // let removal_vehicle = parseFloat(veiculo) + (parseFloat(veiculo) * parseFloat(percentage)) / 100; // let removal_motorcycle = parseFloat(moto) + (parseFloat(moto) * parseFloat(percentage)) / 100; // let removal_tuck = parseFloat(caminhao) + (parseFloat(caminhao) * parseFloat(percentage)) / 100;   // arrayData.push({ // removal_vehicle, // removal_motorcycle, // removal_tuck // })   // $(this).find('.veiculo_atualizado').val(removal_vehicle.toFixed(2)); // $(this).find('.moto_atualizado').val(removal_motorcycle.toFixed(2)); // $(this).find('.caminhao_atualizado').val(removal_tuck.toFixed(2)); // }); // });   apply_removal.on('click', function () { percentage = $('#percentage').val();   $('.table-body tr').each(function () {   let veiculo = $(this).find('.veiculo').text(); let moto = $(this).find('.moto').text(); let caminhao = $(this).find('.caminhao').text();   removal_vehicle = parseFloat(veiculo) + (parseFloat(veiculo) * parseFloat(percentage)) / 100; removal_motorcycle = parseFloat(moto) + (parseFloat(moto) * parseFloat(percentage)) / 100; removal_tuck = parseFloat(caminhao) + (parseFloat(caminhao) * parseFloat(percentage)) / 100;   arrayData.push({ removal_vehicle, removal_motorcycle, removal_tuck })   $(this).find('.veiculo_atualizado').val(removal_vehicle.toFixed(2)); $(this).find('.moto_atualizado').val(removal_motorcycle.toFixed(2)); $(this).find('.caminhao_atualizado').val(removal_tuck.toFixed(2));     console.log('Removal Vehicle:', removal_vehicle); console.log('Removal Motorcycle:', removal_motorcycle); console.log('Removal Truck:', removal_tuck); }); });   $('select#removal_table_from').on('change', function (e) { let table_id = $(this).val(); let action = route('removal.removal-values.show', table_id);   $.ajax({ type: "GET", url: action, headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') },   success: function (data) { $('.table-body').empty();   for (let i = 0; i < data.length; i++) { let carro = parseFloat(data[i].CARRO); let moto = parseFloat(data[i].MOTO); let caminhao = parseFloat(data[i].CAMINHAO); let distancia = data[i].DISTANCIA; let origem = data[i].ORIGEM; let destino = data[i].DESTINO; let localidadeOrigem = data[i].LocalidadeOrigem_ID; let localidadeDestino = data[i].LocalidadeDestino_ID;   let newRow = '<tr class="removal-row">' + '<td class="align-middle">' + '<div class="row">' + '<div class="col-1">' + '<span class="font-weight-bold">Origem</span><br>' + '<span class="origem">' + origem + '</span>' + '</div>' + '<div class="col-1">' + '<span class="font-weight-bold">Destino</span><br>' + '<span class="destino">' + destino + '</span>' + '</div>' + '<div class="col-1">' + '<span class="font-weight-bold">KM</span><br>' + '<span class="km">' + distancia + '</span>' + '</div>' + '<div class="col-1">' + '<span class="font-weight-bold">Veículo</span><br>' + '<span class="veiculo">' + carro + '</span>' + '</div>' + '<div class="col-2">' + '<span class="font-weight-bold">Veículo Atualizado</span><br>' + '<input type="text" class="veiculo_atualizado">' + '</div>' + '<div class="col-1">' + '<span class="font-weight-bold">Moto</span><br>' + '<span class="moto">' + moto + '</span>' + '</div>' + '<div class="col-2">' + '<span class="font-weight-bold">Moto Atualizado</span><br>' + '<input type="text" class="moto_atualizado">' + '</div>' + '<div class="col-1">' + '<span class="font-weight-bold">Caminhão</span><br>' + '<span class="caminhao">' + caminhao + '</span>' + '</div>' + '<div class="col-2">' + '<span class="font-weight-bold">Caminhão Atualizado</span><br>' + '<input type="text" class="caminhao_atualizado">' + '</div>' + '</div>' + '</div>' + '</td>' + '</tr>';   $('.table-body').append(newRow); //let row = $('.removal-row:last');   // Calcula o valor atualizado e define nos campos diretamente // let veiculo_atualizado = carro + (carro * percentage) / 100; // let moto_atualizado = moto + (moto * percentage) / 100; // let caminhao_atualizado = caminhao + (caminhao * percentage) / 100; // console.log('PORCENTS: ', percentage); //console.log('Veiculo Atualizado:', veiculo_atualizado, 'Moto Atualizado:', moto_atualizado, 'Caminhao Atualizado:', caminhao_atualizado);   // Define os valores diretamente nos campos da nova linha // row.find('.veiculo_atualizado').val(veiculo_atualizado.toFixed(2)); // row.find('.moto_atualizado').val(moto_atualizado.toFixed(2)); // row.find('.caminhao_atualizado').val(caminhao_atualizado.toFixed(2));   arrayData.push({ carro, moto, caminhao, distancia, origem, destino, localidadeOrigem, localidadeDestino, removal_vehicle, removal_motorcycle, removal_tuck }); }   $('#copy_data_table').val(JSON.stringify(arrayData)); }   }); });   //javascript para o formulario de cadastro // $(document).ready(function (event) { $('#uf').change(function () { let code_city = $(this).val(); let deposit = localStorage.getItem('selected_deposit_id'); let action = route('removal.removal-values.cities', code_city); $.ajax({ type: "POST", url: action, headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, data: { code_city: code_city },   success: function (data) {   $('#city').empty(); $('#deposit').empty();   for (let i = 0; i < data.cities.length; i++) { $('#city').append('<option value="' + data.cities[i].NM + '">' + data.cities[i].NM + '<option>'); }   if (data.deposits.length > 0) { for (let i = 0; i < data.deposits.length; i++) { $('#deposit').append('<option value="' + data.deposits[i].NM + '">' + data.deposits[i].NM + '<option>'); } } else { // $('#deposit').prop('disabled', true); // $('#city').prop('disabled', false); }   $('#city').trigger('change'); } });   });   $('#deposit').on('change', function () { depositId = $(this).val(); localStorage.setItem('selected_deposit_id', depositId); });   $('#uf_destiny').change(function () { let code_city = $(this).val(); let depositDestiny = localStorage.getItem('selected_deposit_destiny_id'); let action = route('removal.removal-values.cities', code_city); $.ajax({ type: "POST", url: action, headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, data: { code_city: code_city },   success: function (data) {   $('#city_destiny').empty(); $('#deposit_destiny').empty();   for (let i = 0; i < data.cities.length; i++) { $('#city_destiny').append('<option value="' + data.cities[i].NM + '">' + data.cities[i].NM + '</option>'); }   if (data.deposits.length > 0) { // $('#deposit_destiny').prop('disabled', false); //$('#city_destiny').empty(); // $('#city_destiny').prop('disabled', true); for (let i = 0; i < data.deposits.length; i++) { $('#deposit_destiny').append('<option value="' + data.deposits[i].NM + '">' + data.deposits[i].NM + '</option>'); } } else { // $('#deposit_destiny').prop('disabled', true); // $('#city_destiny').prop('disabled', false); }   $('#city_destiny').trigger('change'); } }); });   $('#deposit_destiny').on('change', function () { let depositDestinyId = $(this).val(); localStorage.setItem('selected_deposit_destiny_id', depositDestinyId); });   }); </code>
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.