From 5be3d127bb47cf8ea00a9203bec856495498c54c Mon Sep 17 00:00:00 2001 From: Maximilian Baum Date: Thu, 2 Apr 2026 14:03:56 +0200 Subject: [PATCH] more math routes --- src/routes/api/divide.js | 14 +++ src/routes/api/multiply.js | 14 +++ src/routes/api/subtract.js | 14 +++ src/routes/docs/openapi.json | 195 +++++++++++++++++++++++++++++++++++ src/server.js | 6 ++ 5 files changed, 243 insertions(+) create mode 100644 src/routes/api/divide.js create mode 100644 src/routes/api/multiply.js create mode 100644 src/routes/api/subtract.js diff --git a/src/routes/api/divide.js b/src/routes/api/divide.js new file mode 100644 index 0000000..104d766 --- /dev/null +++ b/src/routes/api/divide.js @@ -0,0 +1,14 @@ +const express = require('express'); +const router = express.Router(); + +router.post('/', (req, res) => { + const { input } = req.body; + res.json({ ret: input.a / input.b }); +}); + +router.get('/:a/:b', (req, res) => { + res.json({ ret: Number(req.params.a) / Number(req.params.b) }); +}); + +module.exports = router; + diff --git a/src/routes/api/multiply.js b/src/routes/api/multiply.js new file mode 100644 index 0000000..bed6c32 --- /dev/null +++ b/src/routes/api/multiply.js @@ -0,0 +1,14 @@ +const express = require('express'); +const router = express.Router(); + +router.post('/', (req, res) => { + const { input } = req.body; + res.json({ ret: input.a * input.b }); +}); + +router.get('/:a/:b', (req, res) => { + res.json({ ret: Number(req.params.a) * Number(req.params.b) }); +}); + +module.exports = router; + diff --git a/src/routes/api/subtract.js b/src/routes/api/subtract.js new file mode 100644 index 0000000..aec90d0 --- /dev/null +++ b/src/routes/api/subtract.js @@ -0,0 +1,14 @@ +const express = require('express'); +const router = express.Router(); + +router.post('/', (req, res) => { + const { input } = req.body; + res.json({ ret: input.a - input.b }); +}); + +router.get('/:a/:b', (req, res) => { + res.json({ ret: Number(req.params.a) - Number(req.params.b) }); +}); + +module.exports = router; + diff --git a/src/routes/docs/openapi.json b/src/routes/docs/openapi.json index 9090ae9..e074948 100644 --- a/src/routes/docs/openapi.json +++ b/src/routes/docs/openapi.json @@ -352,6 +352,201 @@ } } } + }, + "/subtract": { + "post": { + "summary": "Subtracts second number from first", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "input": { + "type": "object", + "properties": { + "a": { + "type": "number", + "example": 10 + }, + "b": { + "type": "number", + "example": 5 + } + } + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/subtract/{a}/{b}": { + "get": { + "summary": "Subtracts second number from first from path parameters", + "parameters": [ + { + "name": "a", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "example": "10" + }, + { + "name": "b", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "example": "5" + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/multiply": { + "post": { + "summary": "Multiplies two numbers", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "input": { + "type": "object", + "properties": { + "a": { + "type": "number", + "example": 5 + }, + "b": { + "type": "number", + "example": 10 + } + } + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/multiply/{a}/{b}": { + "get": { + "summary": "Multiplies two numbers from path parameters", + "parameters": [ + { + "name": "a", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "example": "5" + }, + { + "name": "b", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "example": "10" + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/divide": { + "post": { + "summary": "Divides first number by second", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "input": { + "type": "object", + "properties": { + "a": { + "type": "number", + "example": 10 + }, + "b": { + "type": "number", + "example": 2 + } + } + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/divide/{a}/{b}": { + "get": { + "summary": "Divides first number by second from path parameters", + "parameters": [ + { + "name": "a", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "example": "10" + }, + { + "name": "b", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "example": "2" + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } } } } diff --git a/src/server.js b/src/server.js index f0317df..97b22ac 100644 --- a/src/server.js +++ b/src/server.js @@ -9,6 +9,9 @@ const toStringRoute = require('./routes/api/toString'); const isNumberRoute = require('./routes/api/isNumber'); const stringSplitRoute = require('./routes/api/stringSplit'); const addRoute = require('./routes/api/add'); +const subtractRoute = require('./routes/api/subtract'); +const multiplyRoute = require('./routes/api/multiply'); +const divideRoute = require('./routes/api/divide'); const docsRoute = require('./routes/docs/main'); @@ -28,6 +31,9 @@ app.use('/api/toString', toStringRoute); app.use('/api/isNumber', isNumberRoute); app.use('/api/stringSplit', stringSplitRoute); app.use('/api/add', addRoute); +app.use('/api/subtract', subtractRoute); +app.use('/api/multiply', multiplyRoute); +app.use('/api/divide', divideRoute); app.use('/docs', docsRoute);