Create a JWT API in NODE.JS

const express = require('express');

const app = express();

app.get('/api/hello', (req, res) => {
  res.send({ message: 'Hello, world!' });
});

const port = process.env.PORT || 3000;
app.listen(port, () => {
  console.log(`API server listening on port ${port}`);
});

npm install express

node server.js

const express = require('express');
const jwt = require('jsonwebtoken');

const app = express();

// Secret used to sign the JWT
const jwtSecret = 'your-secret-here';

// Middleware function that verifies the JWT
function verifyJwt(req, res, next) {
  // Get the JWT from the request header
  const token = req.headers['x-access-token'];

  // If there is no token, return an error
  if (!token) {
    return res.status(401).send({ message: 'No token provided' });
  }

  // Otherwise, verify the token
  jwt.verify(token, jwtSecret, (err, decoded) => {
    // If the token is invalid, return an error
    if (err) {
      return res.status(401).send({ message: 'Invalid token' });
    }

    // If the token is valid, save the decoded token to the request object
    // and call the next middleware function
    req.decoded = decoded;
    next();
  });
}

app.get('/api/hello', verifyJwt, (req, res) => {
  res.send({ message: 'Hello, world!' });
});

const port = process.env.PORT || 3000;
app.listen(port, () => {
  console.log(`API server listening on port ${port}`);
});

now how to consume:

const apiUrl = 'http://localhost:3000/api/hello';
const jwt = 'your-jwt-here';

fetch(apiUrl, {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
    'x-access-token': jwt,
  },
})
  .then((response) => response.json())
  .then((data) => {
    console.log(data);
  });

now , how to get the token from the server

const express = require('express');
const jwt = require('jsonwebtoken');

const app = express();

// Secret used to sign the JWT
const jwtSecret = 'your-secret-here';

// User credentials for authentication
const users = [
  { username: 'user1', password: 'pass1' },
  { username: 'user2', password: 'pass2' },
  // ...
];

app.post('/api/login', (req, res) => {
  // Get the user credentials from the request body
  const { username, password } = req.body;

  // Find the user in the list of users
  const user = users.find((u) => u.username === username && u.password === password);

  // If the user was not found, return an error
  if (!user) {
    return res.status(401).send({ message: 'Invalid username or password' });
  }

  // Otherwise, generate a JWT for the user
  const token = jwt.sign({ user }, jwtSecret);

  // Return the JWT to the client
  res.send({ token });
});

const port = process.env.PORT || 3000;
app.listen(port, () => {
  console.log(`API server listening on port ${port}`);
});
const apiUrl = 'http://localhost:3000/api/login';

fetch(apiUrl, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ username: 'user1', password: 'pass1' }),
})
  .then((response) => response.json())
  .then((data) => {
    console.log(data);
  });