You have access to the ip by default through the request object. Checkout the ‘Implement a Root-Level Request Logger Middleware’ lesson as there is an example in the directions.
When you define the function as app.use(function(req, resp, next) { }) just use req.ip to access the ip address
I tried it, but it still does not give me the correct answer. It only shows an address with ::ffff: before it. I tried without trimming it and not trimming it - still not a viable IP address. Could this be a problem with something else?
Do you have a link to your solution so that I can poke around? Here is a snippet from my solution
// init project
var express = require('express');
var app = express();
// enable CORS (https://en.wikipedia.org/wiki/Cross-origin_resource_sharing)
// so that your API is remotely testable by FCC
var cors = require('cors');
app.use(cors({optionSuccessStatus: 200})); // some legacy browsers choke on 204
// http://expressjs.com/en/starter/static-files.html
app.use(express.static('public'));
// http://expressjs.com/en/starter/basic-routing.html
app.get("/", function (req, res) {
res.sendFile(__dirname + '/views/index.html');
});
// your first API endpoint...
app.get("/api/hello", function (req, res) {
res.json({greeting: 'hello API'});
});
app.get("/api/whoami", (req, resp) => {
const { headers } = req;
resp.json({ipaddress: req.ip, language: headers["accept-language"], software: headers["user-agent"]});
});
// listen for requests :)
var listener = app.listen(process.env.PORT, function () {
console.log('Your app is listening on port ' + listener.address().port);
});