J'ai deux URL qui ont un fichier .json.gz
-express.js - Utiliser demande imbriquée pour obtenir JSON URL sauvegarde
var url = "http://post.s3post.cf/s3posts.json.gz";
var backupURL = "https://s3-us-west-2.amazonaws.com/s3post.cf/s3posts.json.gz";
Je suis en mesure d'utiliser avec succès le module de demande pour obtenir json
de la fichier -
app.all('*', function(req, res, next) {
request({
method: 'GET',
uri: url,
gzip: true
}, function(error, response, body) {
res.locals.posts = JSON.parse(body);
next();
});
});
Ce que je veux faire est, si la demande avec url
échoue, je veux utiliser le backupURL
pour obtenir le json
de. Donc, logiquement, je pensais que si je recevais une erreur, j'utiliser une requête imbriquée pour ce faire -
app.all('*', function(req, res, next) {
request({
method: 'GET',
uri: url,
gzip: true
}, function(error, response, body) {
if(error) {
request({
method: 'GET',
uri: backupURL,
gzip: true
}, function(error, response, body) {
res.locals.posts = JSON.parse(body);
next();
});
} else {
res.locals.posts = JSON.parse(body);
next();
}
});
});
Ce ne fonctionne pas. Individuellement, les deux URL fonctionnent avec une requête. Que puis-je faire pour utiliser backupURL
lorsque la demande avec url
échoue?
EDIT 1-
Le programme compile et commence à écouter mon application. Il est quand je demande une page qui se bloque avec cette erreur -
undefined:1
<?xml version="1.0" encoding="UTF-8"?>
^
SyntaxError: Unexpected token < in JSON at position 0
at JSON.parse (<anonymous>)
at Request._callback (/Users/Anish/Workspace/NodeJS/unzipper/app.js:65:28)
at Request.self.callback (/Users/Anish/Workspace/NodeJS/unzipper/node_modules/request/request.js:188:22)
at emitTwo (events.js:106:13)
at Request.emit (events.js:194:7)
at Request.<anonymous> (/Users/Anish/Workspace/NodeJS/unzipper/node_modules/request/request.js:1171:10)
at emitOne (events.js:96:13)
at Request.emit (events.js:191:7)
at IncomingMessage.<anonymous> (/Users/Anish/Workspace/NodeJS/unzipper/node_modules/request/request.js:1091:12)
at Object.onceWrapper (events.js:293:19)
« ne fonctionne pas » est pas une description du problème. Il y a des conséquences, détaillez-les. A savoir toute erreur qui est affichée. Vous pouvez également utiliser des instructions de débogage médiocres et ajouter des instructions console.log pour voir exactement quel chemin prend le code et quel est le contenu des variables à ce stade. – Gimby
@Gimby J'ai modifié ma question avec les informations d'erreur. –