2015-02-23 13 views
8

Mogę się mylić, ale nie udało mi się znaleźć tego w żadnej dokumentacji. Próbuję ustawić typ zawartości globalnie dla każdej odpowiedzi i to się podoba:Jak ustawić typ zawartości globalnie w pliku node.js (ekspres)

// Set content type GLOBALLY for any response. 
    app.use(function (req, res, next) { 
    res.contentType('application/json'); 
    next(); 
    }); 

przed zdefiniowaniem swoich tras.

// Users REST methods. 
    app.post('/api/v1/login', auth.willAuthenticateLocal, users.login); 
    app.get('/api/v1/logout', auth.isAuthenticated, users.logout); 
    app.get('/api/v1/users/:username', auth.isAuthenticated, users.get); 

Z jakiegoś powodu to nie działa. Czy wiesz, co robię źle? Ustawienie go osobno w każdej metodzie, działa, ale chcę go globalnie ...

Odpowiedz

13

Spróbuj this dla Express 4.0:

// this middleware will be executed for every request to the app 
app.use(function (req, res, next) { 
    res.header("Content-Type",'application/json'); 
    next(); 
}); 
3

Znaleziony problem: to ustawienie należy umieścić PRZED:

app.use(app.router) 

więc ostateczny kod jest:

// Set content type GLOBALLY for any response. 
app.use(function (req, res, next) { 
    res.contentType('application/json'); 
    next(); 
}); 

// routes should be at the last 
app.use(app.router) 
+0

błąd: 'app.router jest przestarzała, proszę zobaczyć 3.x do 4.x migratio W przewodniku znajdziesz szczegółowe informacje na temat aktualizacji aplikacji. – rob

Powiązane problemy