API
āļāļ·āđāļāļāļēāļāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāļāđāļ§āļĒ API
API
āđāļāļāļąāļāļāļļāļāļąāļāļĄāļĩāļāļĨāļīāļāļ āļąāļāļāđāđāļĨāļ°āļāļĢāļīāļāļēāļĢāļāļģāļāļ§āļāļĄāļēāļāļāļĩāđāļĄāļĩāļāļēāļĢāđāļāđāļāļēāļāļāļļāļāļāļĢāļāđ IoT āđāļāđāļāļāļāļāđāļāļĢāļ°āļāļāļ āđāļĨāļ°āđāļāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāļĢāļ°āļŦāļ§āđāļēāļāļāļļāļāļāļĢāļāđāđāļĨāļ°āļĢāļ°āļāļāđāļāļāļāļĨāļīāđāļāļāļąāļ āļĢāļđāļāđāļāļāļāļĩāđāđāļāđāļĢāļąāļāļāļ§āļēāļĄāļāļīāļĒāļĄāļāļĒāđāļēāļāļĄāļēāļāļāļ·āļāļāļēāļĢāđāļāđ API (Application Programming Interface) āļāļĩāđāļāļ°āļāļģāđāļŦāđāļāļļāļāļāļĢāļāđāļāđāļēāļāđ āļŠāļēāļĄāļēāļĢāļāļŠāļ·āđāļāļŠāļēāļĢāđāļĨāļ°āđāļĨāļāđāļāļĨāļĩāđāļĒāļāļāđāļāļĄāļđāļĨāļāļąāļāđāļāđāļāļĒāđāļēāļāļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ āļāļĨāļāļāļāļāļŠāļēāļĄāļēāļĢāļāđāļāļ·āđāļāļĄāļāđāļāļāđāļēāļĄāļĢāļ°āļāļāđāļāđ āļŦāļēāļāļĄāļĩāļāļēāļĢāļāļģ API āđāļ§āđāđāļŦāđāđāļĢāļĩāļĒāļāđāļāđāđāļāļĒ API āļāļ·āļāļāļļāļāļāļāļāļāļģāļŠāļąāđāļāđāļĨāļ°āļāļąāļāļāđāļāļąāļāļāļĩāđāđāļŦāđāļāļĢāļīāļāļēāļĢāđāļāđāđāļāļĢāđāļāļĢāļĄāļāđāļēāļāđ āđāļāļ·āđāļāđāļŦāđāļŠāļēāļĄāļēāļĢāļāļŠāļ·āđāļāļŠāļēāļĢāļāļąāļāđāļāđ āđāļāļĒāļāļ°āļāļģāļŦāļāđāļēāļāļĩāđāđāļāđāļāļāļąāļ§āļāļĨāļēāļāļĢāļ°āļŦāļ§āđāļēāļāļāļđāđāđāļāđ (Client) āđāļĨāļ°āđāļāļīāļĢāđāļāđāļ§āļāļĢāđ (Server) āđāļāļĒāđāļāđāļĢāļđāļāđāļāļāļāļēāļĢāļāļģāļāļēāļāđāļāļāļĢāđāļāļāļāļ (Request) āđāļĨāļ°āļāļāļāļāļĨāļąāļ (Response)

āļāđāļāļāļĩāļāļāļāļāļēāļĢāđāļāđ API
āļāđāļāļāļĩāļāļāļāļāļēāļĢāđāļāđ API āđāļāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāļĢāļ°āļŦāļ§āđāļēāļāļāļļāļāļāļĢāļāđāđāļĨāļ°āļĢāļ°āļāļāļĄāļĩāļŦāļĨāļēāļĒāļāļĒāđāļēāļ āđāļāđāļāļāļēāļĢāđāļāđ API āļŠāļēāļĄāļēāļĢāļāđāļāļ·āđāļāļĄāđāļāđāļŦāļĨāļēāļĒāļāļļāļāļāļĢāļāđ āļĄāļĩāļāļ§āļēāļĄāļĢāļ§āļāđāļĢāđāļ§ āļŠāļēāļĄāļēāļĢāļāļāļĒāļēāļĒāđāļāđāļŦāļēāļāđāļāļāļāļēāļāļāļĄāļĩāļāļ§āļēāļĄāļāđāļāļāļāļēāļĢāđāļāļāļēāļĢāđāļāđāļāļēāļāļĄāļēāļāļāļķāđāļāđāļĨāļ°āļŠāļēāļĄāļēāļĢāļāļāļģāļāļąāļāļāļēāļĢāđāļāđāļāļēāļāđāļāđ āļĄāļĩāļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒāļŠāļđāļ
āļāļąāļ§āļāļĒāđāļēāļāļāļēāļĢāđāļāđāļāļēāļāļāļāļ API
āļāļąāļ§āļāļĒāđāļēāļāļāļēāļĢāđāļāđāļāļēāļāļāļāļ API āđāļāđāļāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāļāļļāļāļāļĢāļāđ IoT āļāļąāļāļĢāļ°āļāļāđāļāļāļāļĨāļīāđāļāļāļąāļāļāļāļāļĨāļēāļ§āļāđ āļāļģāđāļŦāđāļŠāļēāļĄāļēāļĢāļāļŠāđāļāļāđāļāļĄāļđāļĨāļāļĩāđāļāđāļēāļāđāļāđāļāļēāļāđāļāļāđāļāļāļĢāđāđāļāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļĨāļ°āđāļŠāļāļāļāļĨāļāļāđāļāļāļāļĨāļīāđāļāļāļąāļāđāļāđ āļāļēāļĢāļāļ§āļāļāļļāļĄāļāļļāļāļāļĢāļāđāđāļāļāđāļēāļāđāļēāļāļāļēāļāđāļāļĢāļĻāļąāļāļāđ āļāļēāļĢāđāļāđāļāļāđāļāļĄāļđāļĨāļŠāļļāļāļ āļēāļāļāļāļāļāļāđāļāđāđāļĨāļ°āđāļŠāļāļāđāļŦāđāļāļļāļāļĨāļēāļāļĢāļāļēāļāļāļēāļĢāđāļāļāļĒāđāđāļāļ·āđāļāļāļĢāļ°āļāļāļāļāļēāļĢāļĢāļąāļāļĐāļē āļāļēāļĢāļŠāđāļāļāđāļāļĄāļđāļĨāļāļĩāđāļāđāļēāļāļāđāļēāļĢāļ°āļāļąāļāļāđāļģāļĄāļēāđāļŠāļāļāļāļĨāļāļāļŦāļāđāļē Dashboard āđāļāđāļāļāđāļ
āļāļēāļĢāđāļāđāļāļēāļ API
āļāļēāļĢāđāļĢāļĩāļĒāļ API āđāļāđāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļĩāđāđāļāļĢāđāļāļĢāļĄāļāļģāļāļēāļĢāļĢāđāļāļāļāļ (Request) āļāđāļāļĄāļđāļĨāļāļēāļ API āđāļĨāļ° API āļāļģāļāļēāļĢāļāļāļāļŠāļāļāļ (Responses) āļāđāļāļĄāļđāļĨāļāļĨāļąāļāļĄāļēāļāļēāļĄāļāļģāļĢāđāļāļāļāļāđāļāļĒāļāđāļāļĄāļđāļĨāļāļĩāđāļŠāđāļāļāļĨāļąāļāļĄāļēāļāļ°āļāļĒāļđāđāđāļāļĢāļđāļāđāļāļ JSON āļŦāļĢāļ·āļ XML āđāļāļāļāļĢāļ°āļāļģāđāļāļĢāļđāļāđāļāļāļāļāļ HTTP (Hypertext Transfer Protocol) āđāļāđāļāđāļāļĢāđāļāļāļāļĨāļāļĩāđāđāļāđāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļŠāđāļāļāđāļāļĄāļđāļĨāļĢāļ°āļŦāļ§āđāļēāļāļāļđāđāđāļāđ (Client) āđāļĨāļ°āđāļāļīāļĢāđāļāđāļ§āļāļĢāđ (Server) āđāļāļĒāļĄāļĩāļāļēāļĢāđāļāđāļ§āļīāļāļĩāļāļēāļĢ (methods) āļāđāļēāļāđ āđāļāđāđāļāđ
GET: āļāļķāļāļāđāļāļĄāļđāļĨāļāļēāļāđāļāļīāļĢāđāļāđāļ§āļāļĢāđ (āļāđāļēāļāļāđāļāļĄāļđāļĨ)
POST: āļŠāđāļāļāđāļāļĄāļđāļĨāđāļāļĒāļąāļāđāļāļīāļĢāđāļāđāļ§āļāļĢāđ (āļŠāļĢāđāļēāļāļāđāļāļĄāļđāļĨāđāļŦāļĄāđ)
PUT: āļāļąāļāđāļāļāļāđāļāļĄāļđāļĨāļāļĩāđāļĄāļĩāļāļĒāļđāđāđāļĨāđāļ§āļāļāđāļāļīāļĢāđāļāđāļ§āļāļĢāđ
DELETE: āļĨāļāļāđāļāļĄāļđāļĨāļāļāđāļāļīāļĢāđāļāđāļ§āļāļĢāđ
ðĨ Requirements
Computer
ðŧ
Nodejs Version 20 or later
BDH IoT Data Service API Development
Express.js āđāļāđāļāđāļāđāļāđāļāļ Nodejs āļāļĩāđāļāđāļ§āļĒāđāļŦāđāļŠāļēāļĄāļēāļĢāļāļŠāļĢāđāļēāļ API āđāļāđāļāđāļēāļĒāđāļĨāļ°āļĢāļ§āļāđāļĢāđāļ§ āđāļāđāļĢāļąāļāļāļ§āļēāļĄāļāļīāļĒāļĄāļŠāļđāļ āđāļāļĒ Express.js āļĄāļĩāđāļāļĢāļāļŠāļĢāđāļēāļāļāļĩāđāļāđāļēāļĒāđāļĨāļ°āđāļĄāđāļāļąāļāļāđāļāļ āļĄāļĩāļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļāđāļāļāļēāļĢāļāļąāļāļāļēāļĢ Path āđāļĨāļ°āļāļģāļŦāļāļ Path āļŠāļģāļŦāļĢāļąāļāļāļģ HTTP Request āđāļāđ
Swagger āđāļāđāļāđāļāļĢāļ·āđāļāļāļĄāļ·āļāđāļāļāļēāļĢāļŠāļĢāđāļēāļāđāļāļāļŠāļēāļĢāļŠāļģāļŦāļĢāļąāļāđāļāđāļāļēāļ API (API Documents) āļāļĩāđāļāļ°āļāđāļ§āļĒāđāļŦāđāļŠāļēāļĄāļēāļĢāļāļāļāļĨāļāļāđāļĢāļĩāļĒāļāđāļāđāļāļēāļ API āđāļ path āļāđāļēāļāđ āđāļāđāļāđāļēāļ Web browser āđāļāđāđāļāļĒāļāļĢāļ
āļāļąāđāļāļāļāļāļāļēāļĢ āļŠāļĢāđāļēāļ API āļāđāļ§āļĒ Express.js
1. āđāļāļīāļ vscode āđāļĨāļ°āļŠāļĢāđāļēāļ folder āđāļāđāļāļ·āđāļāļ§āđāļē api-server-workshop
2. āđāļāļīāļ folder āļāđāļ§āļĒāđāļāļĢāđāļāļĢāļĄ vsCode āđāļĨāļ°āļāļģāļāļēāļĢāļŠāļĢāđāļēāļ nodejs project āļāđāļēāļ termial āđāļāļĒāđāļāđāļāļģāļŠāļąāđāļ
npm init -y
āļāļ°āđāļāđāđāļāļĨāđāļāļ·āđāļāļ§āđāļē Package.json āđāļ folder
āļāļģāļāļēāļĢāļāļīāļāļāļąāđāļ Package āļŠāļģāļŦāļĢāļąāļāđāļāđāļāļēāļ
npm install express swagger-jsdoc swagger-ui-express --save
āļŠāļĢāđāļēāļāđāļāļĨāđ app.js āđāļĨāļ° āđāļĨāļ°āđāļāļīāđāļĄ Code āļāđāļēāļāļĨāđāļēāļ

const express = require('express');
const swaggerJsDoc = require('swagger-jsdoc');
const swaggerUi = require('swagger-ui-express');
const app = express();
app.use(express.json());
// āļāļēāļĢāļāļąāđāļāļāđāļē Swagger
const swaggerOptions = {
swaggerDefinition: {
openapi: '3.0.0',
info: {
title: 'IoT Device API',
version: '1.0.0',
description: 'API āļŠāļģāļŦāļĢāļąāļāļāļąāļāļāļēāļĢāļāđāļāļĄāļđāļĨ IoT Device',
},
servers: [
{
url: 'http://localhost:3000',
},
],
},
apis: ['./app.js'],
};
const swaggerDocs = swaggerJsDoc(swaggerOptions);
app.use('/docs', swaggerUi.serve, swaggerUi.setup(swaggerDocs));
// āļāđāļāļĄāļđāļĨāļāļąāļ§āļāļĒāđāļēāļāļŠāļģāļŦāļĢāļąāļ IoT Device
let devices = [
{ id: 1, name: 'Temperature Sensor', type: 'sensor', status: 'active' },
{ id: 2, name: 'Humidity Sensor', type: 'sensor', status: 'inactive' },
];
/**
* @swagger
* /devices:
* get:
* summary: āļĢāļąāļāļāđāļāļĄāļđāļĨ IoT Devices āļāļąāđāļāļŦāļĄāļ
* responses:
* 200:
* description: āļŠāļģāđāļĢāđāļ
* content:
* application/json:
* schema:
* type: array
* items:
* type: object
* properties:
* id:
* type: integer
* name:
* type: string
* type:
* type: string
* status:
* type: string
*/
app.get('/devices', (req, res) => {
res.json(devices);
});
/**
* @swagger
* /devices/{id}:
* get:
* summary: āļĢāļąāļāļāđāļāļĄāļđāļĨ IoT Device āđāļāļĒāđāļāđ ID
* parameters:
* - in: path
* name: id
* required: true
* schema:
* type: integer
* description: ID āļāļāļ IoT Device
* responses:
* 200:
* description: āļŠāļģāđāļĢāđāļ
* content:
* application/json:
* schema:
* type: object
* properties:
* id:
* type: integer
* name:
* type: string
* type:
* type: string
* status:
* type: string
* 404:
* description: āđāļĄāđāļāļāļāļļāļāļāļĢāļāđ
*/
app.get('/devices/:id', (req, res) => {
const device = devices.find((d) => d.id === parseInt(req.params.id));
if (!device) return res.status(404).send('āđāļĄāđāļāļāļāļļāļāļāļĢāļāđ');
res.json(device);
});
/**
* @swagger
* /devices:
* post:
* summary: āđāļāļīāđāļĄ IoT Device āđāļŦāļĄāđ
* requestBody:
* required: true
* content:
* application/json:
* schema:
* type: object
* properties:
* name:
* type: string
* type:
* type: string
* status:
* type: string
* responses:
* 201:
* description: āļŠāļĢāđāļēāļāļāļļāļāļāļĢāļāđāđāļŦāļĄāđāļŠāļģāđāļĢāđāļ
*/
app.post('/devices', (req, res) => {
const newDevice = {
id: devices.length + 1,
name: req.body.name,
type: req.body.type,
status: req.body.status,
};
devices.push(newDevice);
res.status(201).json(newDevice);
});
/**
* @swagger
* /devices/{id}:
* put:
* summary: āđāļāđāđāļāļāđāļāļĄāļđāļĨ IoT Device āđāļāļĒāđāļāđ ID
* parameters:
* - in: path
* name: id
* required: true
* schema:
* type: integer
* description: ID āļāļāļ IoT Device
* requestBody:
* required: true
* content:
* application/json:
* schema:
* type: object
* properties:
* name:
* type: string
* type:
* type: string
* status:
* type: string
* responses:
* 200:
* description: āđāļāđāđāļāļāđāļāļĄāļđāļĨāļŠāļģāđāļĢāđāļ
* 404:
* description: āđāļĄāđāļāļāļāļļāļāļāļĢāļāđ
*/
app.put('/devices/:id', (req, res) => {
const device = devices.find((d) => d.id === parseInt(req.params.id));
if (!device) return res.status(404).send('āđāļĄāđāļāļāļāļļāļāļāļĢāļāđ');
device.name = req.body.name;
device.type = req.body.type;
device.status = req.body.status;
res.json(device);
});
/**
* @swagger
* /devices/{id}:
* delete:
* summary: āļĨāļ IoT Device āđāļāļĒāđāļāđ ID
* parameters:
* - in: path
* name: id
* required: true
* schema:
* type: integer
* description: ID āļāļāļ IoT Device
* responses:
* 200:
* description: āļĨāļāļāļļāļāļāļĢāļāđāļŠāļģāđāļĢāđāļ
* 404:
* description: āđāļĄāđāļāļāļāļļāļāļāļĢāļāđ
*/
app.delete('/devices/:id', (req, res) => {
const deviceIndex = devices.findIndex((d) => d.id === parseInt(req.params.id));
if (deviceIndex === -1) return res.status(404).send('āđāļĄāđāļāļāļāļļāļāļāļĢāļāđ');
devices.splice(deviceIndex, 1);
res.send('āļĨāļāļāļļāļāļāļĢāļāđāļŠāļģāđāļĢāđāļ');
});
// āđāļĢāļīāđāļĄāđāļāļīāļĢāđāļāđāļ§āļāļĢāđ
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server is running on port ${PORT}`));
Run Code āļāđāļ§āļĒāļāļģāļŠāļąāđāļāđāļ termianl
node app.js

āđāļāļīāļ Web Browser āļāļĩāđ http://localhost:3000/docs āļāļ°āđāļāđāļŦāļāđāļē API Docs

Last updated
Was this helpful?