Skip to content

Last modified: April 17, 2025

Pterosaurs demo

DEMO_PTEROSAURS/
├── data/
│   └── pterosaur.json
├── public/
│   ├── stylesheets/
│   ├── index.html
│   └── index.js
├── routes/
│   ├── api.js
│   └── users.js
└── app.js


app.js

import express from 'express';
import path from 'path';
import cookieParser from 'cookie-parser';
import logger from 'morgan';

import usersRouter from './routes/users.js';
import apiRouter from "./routes/api.js"

import { fileURLToPath } from 'url';
import { dirname } from 'path';

const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);

var app = express();

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/users', usersRouter);
app.use('/api', apiRouter)

export default app;

api.js

import express from 'express'
import { promises as fs } from 'fs'

var router = express.Router()

router.get('/getPterosaurs', async (req, res) => {
    const data = await fs.readFile("data/pterosaur.json")
    let pterosaurInfo = JSON.parse(data)

    let filteredPterosaurInfo = 
        pterosaurInfo.filter(item => {
            if (item.img != "") {
                return true
            }
            else {
                return false
            }
        })

    res.json(filteredPterosaurInfo)
});

export default router;

index.html

<html>

  <head>
    <title>Pterosaur</title>
    <link rel="stylesheet" href="/stylesheets/style.css">
    <script src="index.js"></script>
  </head>

  <body>
    <h1>Pterosaur</h1>
    <p>See Pterosaur Deta!</p>
    <button onClick="getPterosaurs()">Load Pterosaurs</button>
    <div id="results"></div>
  </body>

</html>

index.js

async function getPterosaurs() {
    let response = await fetch("api/getPterosaurs")
    let dataJson = await response.json()

    let pterosaurHtml = dataJson.map(item => {
        return `
            <div>
                <p>${item.Genus}</p>
                <img src=${item.img} />
            </div>`
    }).join("")

    document.getElementById("results").innerHTML = pterosaurHtml
}