මං අඟහරුවාදා දිනේම News API එක ලොව පළ කළා. ඒ වේලාවේම එය කවුද භාවිතා කරන්නේ කියලා මට කිසිවක් නොදැන. NewTqnia කියන ඉංග්රීසි‑අරාබි දෙභාෂා තාක්ෂණ පත්රිකාව සකස් කරමින් සිටින්නෙමි, ඉල්ලීම් දිගුවෙන් දිගුවට වැඩි වුණා – වෙබ් අඩවිය, RSS, JSON API, embed widget, නව‑ටැබ් පිටුව, structured timelines. ඒ සියල්ලට එකම අන්තර්ගතය විවිධ ආකාරින් සපයන්න ඕනෑවක් වුණා.
API එක සරලවම ආරම්භ කළා – පළමු සංස්කරණය “curl https://newtqnia.com/v1/news/today?locale=en&limit=5” වගේම සරල. දින, නවතම, query params දෙක, API key නැත, විනාඩියකට ඉල්ලීම් 60, ETag සහ Cache‑Control. වඩාත් විශාල endpoint (categories, tags, search) එක්ක මුලින්ම යාමට හැකියාව තිබුණා, නමුත් අස්ථිර contract එකක් පබ්ලික් API එකකට ගත වුවමනා නැත. ඒ නිසා “prudent small” හා “uselessly small” අතර සීමාව තවමත් මට හොයාගන්න බෑ.
වෙබ් widget එකත් අමාරු වුණා. Isolation strategy එකක් තෝරාගත යුතුය. Iframe එකේ responsive sizing ගැටලුව, Shadow DOM එකේ theming හා accessibility ගැටළු, plain script එකේ host CSS‑ලින් එකක් !important වුනාම layout බිඳී යනවා. මම data‑* attributes සහ plain script එකෙන් පටන් ගත්තා, නමුත් එය දිගුකාලීන විසඳුමක්දැයි තවමත් සැකයි.
Timeline data ගැනත් කතා කරමු. ලිපියක් එක මොහොතක් විස්තර කරනවා, timeline එක වසර ගණනාවක සිදුවීම් සම්බන්ධ කරයි. ඒ සඳහා date, event type, source, media, bilingual captions වගේ fields තියෙන්න ඕන. නමුත් විශ්වාසනීය source දෙකක් දිනයේ අසමතලතාවක් පෙන්වන විට, හෝ timeline එක incomplete කියලා ලේබල දීමට ගැටලුවක් තියෙනවා. JSON‑LD වැනි standard vocabularies භාවිතා කරනවා නම් interoperability වැඩි වේ, නමුත් custom JSON ලියන එක සරලයි.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ තරුණ devs, students, startups සඳහා මේ අත්දැකීම් ඉතාම ප්රයෝජනවත්. API එක “small but solid” ලෙස නිර්මාණය කිරීමෙන් ඉගෙන ගත හැකි best practice ගොඩක් තියෙනවා – contract stability, versioning, rate‑limit, caching. Widget එකේ isolation තේරීම් ගැන දැන ගැනීමෙන් local web projects වල UI consistency රැකගත හැක. Timeline data model එකේ bilingual support ඉදිරියේදී සිංහල‑ඉංග්රීසි දෙභාෂා content එකක් නිර්මාණය කරගැනීමට මාර්ගය හදා දේ.
අවසන් වශයෙන්, API එක පළමු පරිශීලක රහිතව පළ කිරීමෙන් “demand‑driven development” යන මඟ පෙන්වයි. ඉදිරියේදී වැඩි features එක්කරනවාට පෙර, මුලික contract එක ශක්තිමත් කරගෙන, community feedback එකට අනුගතව වැඩ කරමු.