Node.js සිංහලෙන් ඉගෙන ගමු - පාඩම් මාලාව 3
මේ පාඩමෙන් අපි බලමු කොහොමද server එකට එන GET request handle කරන්නෙ කියල. මුලින්ම දැනගතයුතු දෙයක් තමයි කිසිම Framework එකක් එහෙමත් නැත්නම් වෙන කෙනෙක් ලබාදීපු මෙවලමක් භාවිතා නොකර මේ server එකට එන request තමන්ටම handle කරන්න පුලුවන්. නමුත් මේ සදහා ඉතාමත් වෙහෙසක් දැරිය යුතු වෙන්ව. මේක අපේ කාලයත් අපතේ යැවීමක්. කියමනකුත් තියෙනවනේ Don't reinvent the wheel, just realign it කියල. නැවත රෝදය සොයාගන්න යන්න එපා. එක අවශ්ය ආකාරයට යොදාගන්න. අන්න ඒ වගේ server එකට එන request handle කරන්න අපිට දීපු මෙවලම එහෙමත් නැත්නම් Framework එක තමයි Express.js කියන්නේ. මේ Framework එක භාවිතා කරල අපි කොහොමද බලමු server එකට එන request handle කරන්නේ.
මුලින්ම අලුත් project එකක් පටන්ගමු. මේ සඳහා මුලින්ම තමන්ගේ සාදාගත් project folder එක terminal එකෙන් open කරල (Terminal Command :- cd pathToProjectFolder),
npm init
run කරන්න. අවශ්ය තොරතුරැ ලබාදුන් පසුව package.json file එක ඔබේ project folder එකේ තිබෙනව දැකගන්න පුලුවන්. දැන් ඔබ කලයුත්තේ ඔබගේ server.js file එක සාදාගන්නා එක. එය සාදාගත් පසු Express.js install කරගැනීම කල යුතුයි. ඒ සදහා project folder එකේ open වී ඇති terminal එක බාවිතයෙන්
npm install express --save
run කරන්න (මේ සදහා අන්තර්ජාල පහසුකම් තිබිය යුතුය). එවිට ඔබට දැකගන්න පුලුවන් වේවි node_modules ලෙස folder එකක් සෑදිලා තිබෙනවා. දැන් අපි install කරගත් Express.js Framework එක භාවිතා කරන්නේ කොහොමද බලමු.
Express.js Framework එක server.js file එක ඇතුලේ භාවිතා කිරීමට එය පහත ආකාරයට import කරගන්න. server.js file එකේ ඉහලින්ම
const express = require('express');ඇතුලත් කරන්න. මෙහිදී Express.js Framework එකේ ඇති සියලුම යෙදීම් express variable එක හරහා ලබාගන්න පුලුවන්. දෙවනුව අපගේ මුලිකම server object එක නිර්මාණය කරගතයුතු වෙනව. ඒ සදහා,
const app = express();
server file එකට ඇතුලත් කරන්න. අපි සදාගත් app කියන server object එක භාවිතා කරල තමයි server එකේ සෑම හැකියාවක්ම එහෙමත් නැත්නම් functionality එකක්ම ඇතුලත් කරන්නෙ. දැන් පහත පරිදි sever file එක වෙනස් කරන්න.
const express = require('express');
const app = express();
app.use('/', (request, response) => {
response.send("Hello From Express");
});
app.listen(3000, (err) => {
if(err) {
console.log(err);
} else {
console.log("Server Running");
}
});
දැන් පෙර පරිදිම sever.js file එක terminal එකේ run කරගන්න (node server ලෙස). දැන් browser එකේ http://localhost:3000/ web url එක load කරල බලන්න. එවිට Hello From Express ලෙස response එකක් දැකගන්න පුලුවන්. මෙහිදී app.use භාවිතා කිරීමෙන් සිදුවන්නේ server එකට එන ඕනෑම request එකකට Hello From Express කියන response එක යවන එක. පෙර පරිදිම 3000 port එකේ server එක run කරගැනීමට තමයි app.listen භාවිතයෙන් වෙන්නේ.
- GET request
Express.js භාවිතා කර ඉතාමත් පහසුවෙන් request එකක් handle කරන්න පුලුවන්. ඒ සදහා app.get function එක භාවිතා කරන්න පුලුවන්. අපි බලමු මේ function එක භාවිතා කරන්නේ කොහොමද කියල. server file එකට පහත වෙනස්කම් සිදුකරන්න.
const express = require('express');
const app = express();
app.get('/home', (request, response) => {
response.send("Hello From Home");
});
app.get('/profile', (request, response) => {
response.send("Hello From Profile");
});
app.listen(3000, (err) => {
if (err) {
console.log(err);
} else {
console.log("Server Running");
}
});
පෙර පරිදිම server file එක run කර, browser එකේ http://localhost:3000/ වෙබ් url එක load කර බලන්න. එවිට Cannot GET / ලෙස දැකගන්න පුලුවන්. එසේ සිදුවන්නේ අපේ base url එකට (/) අපි GET request එක handle කරන්න function එකක් නිර්මාණය කර නැති නිසා. නමුත් http://localhost:3000/home load කරල බැලුවොත් Hello From Home response එක දැකගන්න පුලුවන්. එසේ වන්නේ අපි /home url එකට අපි GET function එකක් නිර්මාණය කර තිබෙන නිසා. ඒ වගේම http://localhost:3000/profile url එකටද Hello From Profile response එක බලාගන්න පුලුවන්. මේ ආකාරයෙන් අපිට /home url එකේදී Home.html එක response එක විදියට යවන්න මෙය භාවිතා කරන්න පුලුවන්.
app.get('/home', (request, response) => {
response.sendFile("pathToProjectFolder/home.html");
});
මේ ආකාරයට සරලව GET request handle කරගන්න පුලුවන්. දැන් බලමු කොහොමද request එක පිළිබද දත්ත අඩංගු (parameters) GET request එකක් handle කරන්නේ කියල. අපි දැකල තිබෙනව සංකීර්ණ GET request මේ ආකාරයේ:
https://www.facebook.com/SarcasticWorld/photos/a.615755948539420/2282388428542822/?type=3&theater
මේ url එකේ SarcasticWorld කියන්නේ parameter එකක්. එම parameter එක භාවිතා කරන්නේ Facebook එකේ කුමන page එකද කියල අදුරගන්න. අපි බලමු මේවගේ parameter එකක් GET request එකකින් ලබන්නේ කොහොමද කියල.
app.get('/home/:userId', (request, response) => {
response.send("Home Page For " + request.params.userId);
});
මේ ආකාරයට :paramName තමයි අපි parameter එකක් හදුන්වා දෙන්නෙ url එකට. උදාහරණයේ ආකාරයට /home/ එකෙන් පස්සේ එන data එක uesrId parameter එකට assign වෙනව. පසුව අපිට එය request.params.userId ලෙස ලබාගන්න පුලුවන්. http://localhost:3000/home/testuser_123 වෙබ් url එක browser එකේ load කර බලන්න. එවිට Home Page For testuser_123 දැකිය හැකියි. මේ වගේ parameters අපිට භාවිතා කරන්න වෙන අවස්ථාවක් තමයි අපි project management වලට API එකක් හදනවනම් එකේ යම් project එකක යම් task එකක් අපිට ලබාගන්න අවශ්ය විට මෙම ආකාරයේ GET request එකක් තමයි භාවිතා කරන්න වෙන්නේ. උදහරණයක් විදියට http://localhost:3000/project_1/task?taskId=task12 වගේ url එකක් ඉගත කරුණ සදහා භාවිතා කරන්න පුලුවන්. ඒ සදහා අපේ server එකේ function එකක් නිර්මාණය කල තැබිය යුතුයි. මෙහි තවත් විශේෂ කොටසක් දකින්න පුලුවන් ඒ තමයි ?taskId=task12. මේ ආකාරයේ දත්තයක් හදුන්වන්නේ GET request query එකක් විදියට. අපි දන් බලමු මේ වගේ query එකක් read කරන්නේ කොහොමද කියල.
app.get('/task', (request, response) => {
response.send("Task : " + request.query.taskId);
});
මේ ආකාරයෙන් request.query භාවිතයෙන් මෙම GET request query දත්ත භාවිතා කල හැකියි. http://localhost:3000/task?taskId=task_123 වෙබ් url එක browser එකේ load කර බලන්න. එවිට Task : task123 ලෙස දැකගත හැකියි.
දැන් අපි බලමු කොහොමද http://localhost:3000/project_1/task?taskId=task12 වැනි GET request එකක් handle කරන්නේ කියල.
app.get('/:projectId/task', (request, response) => {
response.send("Task : " + request.query.taskId + " / Project : " + request.params.projectId);
});
මෙහිදී request.params භාවිතා කර projectId එකද request.query භාවිතා කර taskId එකද ලබාගත හැකි අරතර ඉදිරියේදී Database එකක් භාවිතයෙන් මෙම දත්ත වලට අදාල තොරතුරු ලබාගන්නා ආකාරය සාකච්චා කරමු.
මේ ආකාරයෙන් server එකක GET request handle කිරීම සිදුකල හැකි අතර ඊලග පාඩමෙන් POST request handle කරන්නේ කෙසේදැයි විමසා බලමු.
අමතර කියවීමට :- https://expressjs.com/en/4x/api.html

thanks bro learned lot
ReplyDelete