* @file Initialise et configure le serveur Express sur lequel tourne le back.
*
* La configuration inclut tout le _middleware_ définissant les API et les services
* nécessaire utilisés, comme `express-session`, GraphiQL, GraphQL Voyager.
* Inclut les middlewares des packages utilisés: apollo-server, passportjs, morgan...
* et définit le middleware de notre API.
* Pour comprendre ce que fait chaque package, se référer à leur page sur https://www.npmjs.com.
*
* @todo changer cette description... ^
* @todo qu'arrive-t-il aux requetes avec un cookie expire? elles ne sont traitees ni par passport.session() ni par passport.authenticate('ldapauth')...
* On peut considérer que les app.use (et app.get et app.post) sont pattern-matchés et
// "The app object conventionally denotes the Express application"
// see https://expressjs.com/en/4x/api.html#app
constapp=express();
// Parse incoming HTTP request bodies, available under the req.body property. cf www.npmjs.com/package/body-parser
// app: denotes the Express application
constapp=express();
// parse incoming HTTP request bodies, available under the req.body property
app.use(bodyParser.json());//parses bodies of media type "application/json"
app.use(bodyParser.urlencoded({//parses bodies of media type "application/x-www-form-urlencoded"
extended:true//use qs library (quoi que ca veuille dire o.O)
extended:true//use qs library (see https://www.npmjs.com/package/body-parser#bodyparserurlencodedoptions)
}));
//parses Cookie header and populate req.cookies with an object keyed by the cookie names. was necessary for express-session before its v1.5.0. on peut probablement l'enlever desormais.
//parse Cookie header and populate req.cookies with an object keyed by the cookie names
app.use(cookieParser());
// cache le fait que l'application tourne sous Express dans le header HTTP.
// ne *pas* inclure de header HTTP publicisant que l'application tourne sous Express