2016-03-31 14 views
1

Oluşturduğum bir sitenin resimlerini alabilmem için bilgi için harici bir sunucuya http isteği vermem gereken bir durum var. Şu anda, isteklerden gelen yanıtlar iki şekilde, XML ve görsel olarak gelir. Bunu Node.js. kullanarak yapıyorumNode.js ile http isteği içinden harici API'ye görüntü nasıl görüntülenir

XML için, sorunları olmadan ayrıştırabilirim ve bir değişkene geçirilebilir ve her şey gibi ele alınabilir. Resimlerle, sıkışıp kaldım, onlar için istekte bulunduktan sonra sayfada "görüntülendikleri" hakkında hiçbir fikrim yok. En uzağa ulaşabildiğim, isteği postacıda doğru şekilde ayarlamak. Sorum şu: Resmi başka bir sunucuya yaptığım isteğin yanıtının gövdesinden çekip, kurduğum web uygulamasında görüntüleyebilir miyim?

Arka uç dünyaya çok yeniyim ve gittiğimde öğrenmeye çalışıyorum. Bu benim bulmak ve herhangi bir yardım derece mutluluk duyacağız

var request = require("request"); 
var express = require("express"); 
var jsxml = require("node-jsxml"); 
var app = express(); 
var fs = require("fs"); 

app.get('/users', function(req,res) { 
console.log("List of users requested."); 
// We will grab the list of users from the specified site, but first we have to grab the site id 
// (Same idea as when we added users. We could have checked if req.session.SiteID has been populated, 
// but I chose to keep it simple instead) 
request(
    { 
     url: 'http://' + SERVERURL + '/api/2.0/sites/' + SITE + '?key=name', 
     headers: { 
      'Content-Type': 'text/xml', 
      'X-Tableau-Auth': req.session.authToken 
     } 
    }, 
    function(err, response, body) { 
     if(err) { 
      req.session.err = err; 
      res.redirect('/'); 
     } else { 
      var bodyXML = new jsxml.XML(body); 

      console.log("site id: " + siteID); 
     } 
     // OK. We have the site, now let's grab the list of users 
     // Since we're just making a GET request, we don't need to build the xml. All the is needed 
     // is the SiteID which is inserted in the url and the auth token which is included in the headers 
     request(
      { 
       url: 'http://' + SERVERURL + '/api/2.0/sites/' + siteID + '/users/', 
       headers: { 
        'Content-Type': 'text/xml', 
        'X-Tableau-Auth': authToken 
       } 
      }, 
      function(err, response, body) { 
       if(err) { 
        req.session.err = err; 
       } else { 
        // A succesful request returns xml with a <users> which contains multiple <user> elements. 
        // The <user> elements have name attributes and id attributes which we'll grab, store in a 
        // javascript object and render those in the html that loads. 
        var bodyXML = new jsxml.XML(body); 
        bodyXML.descendants('user').each(function(item, index) { 
         userIDs[item.attribute('name').getValue()] = item.attribute('id').getValue(); 
        }); 
        for(var user in userIDs) { 
         console.log(user + " " + userIDs[user]); 
        } 
       } 
       res.render("users.ejs", { 
        err: req.session.err, 
        userIDs: userIDs, 
        site: SITE 
       }); 
      } 
     ); 
    } 
); 
}); 

API aldığım o bir XML yanıtı ayrıştırmak için kullanabilirim mümkün olmuştur ne bir örnektir. Teşekkürler!

cevap

1

Adım 1: Görüntü getir ve düğümü sunucuya kaydet. request module documentation on streaming for more options

request('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png')); 

Adım 2: yanıt olarak kaydedilen görüntü göndermek.

+0

Bu mantıklı geldiğine inanıyorum. Yine buna yeniyim. Metin değişkenleri ile biliyorum, onları müşteri tarafında iletmek için bir sayfa istedikten sonra onları tanımlayabilirim. Bu görselin isteği html sitesinde nasıl görünüyor? etiketi nedir? –

+0

evet, basit bir etiketi. Bir görüntü alabilir ve kaynak sayfada kendinizi arayabilirsiniz. –