In this Article
آپ نے شاید “API” کا مخفف پہلے ہی درجنوں بار دیکھا ہوگا۔ اگر آپ نے کبھی آن لائن ادائیگی کی ہے یا کوئی ڈیٹا جمع کرنے والی سروس استعمال کی ہے، تو آپ اس بظاہر پراسرار API سے پہلے ہی کام لے چکے ہیں۔ مگر آخر یہ ہے کیا؟ اس مضمون میں ہم دیکھیں گے کہ APIs کیا ہوتی ہیں، API پروٹوکول کون کون سے ہیں، اور APIs کی کون سی اقسام پائی جاتی ہیں۔
API کیا ہے، اور یہ کیسے کام کرتی ہے؟
Application Programming Interface ایک سافٹ ویئر واسطہ ہے جو مختلف ایپلیکیشنز کو آپس میں رابطہ کرنے دیتا ہے۔ APIs عموماً سسٹمز کے بیک اینڈ میں کام کرتی ہیں، اس لیے آپ ان کا عمل براہ راست نہیں دیکھتے، اور اکثر آپ کو اندازہ بھی نہیں ہوتا کہ آپ اس وقت انہیں استعمال کر رہے ہیں۔
مثال کے طور پر، آپ اپنی پسندیدہ نیوز ویب سائٹ کھولتے ہیں اور آج کے موسم کی پیش گوئی دیکھتے ہیں۔ دوسری ملتی جلتی ویب سائٹس بھی غالباً آپ کو یہی معلومات دکھاتی ہیں۔ لیکن وہ یہ ڈیٹا کہاں سے لاتی ہیں؟ ظاہر ہے، نیوز اداروں کے پاس پیش گوئیاں بنانے کے لیے اپنے موسمیاتی اسٹیشن نہیں ہوتے۔ اس کے بجائے وہ موسمیاتی مرکز سے ڈیٹا لیتے ہیں۔ ساتھ ہی، ویب سائٹ کو آپ کے مقام کے مطابق درست پیش گوئی دکھانی ہوتی ہے، اور اسی وقت درجنوں جگہوں سے ہزاروں وزٹرز اسی نیوز آؤٹ لیٹ کو دیکھ رہے ہوتے ہیں۔ ڈویلپرز یا ویب سائٹ ایڈمنز ہر وزٹر کے لیے پیش گوئیاں دستی طور پر فراہم یا اپ ڈیٹ نہیں کر سکتے۔ اس کے بجائے وہ API استعمال کرتے ہیں۔ جب بھی آپ خبریں پڑھنے کے لیے یہ ویب سائٹ کھولتے ہیں، یہ آپ کے مقام کا موسم معلوم کرنے کے لیے API کے ذریعے ایک موسمیاتی ایپ کو “call” کرتی ہے اور پھر اس ایپ کا جواب آپ کو دکھاتی ہے۔ اسے یوں سمجھیں جیسے آپ اپنے فون سے دوست کا نمبر ملا کر اس سے رابطہ کرتے ہیں۔ API اس “phone number” کی طرح ہے جسے ایپس ایک دوسرے سے رابطہ کرنے کے لیے استعمال کرتی ہیں۔
APIs مقبول ہیں اور بجا طور پر بڑے پیمانے پر استعمال ہوتی ہیں۔ سب سے پہلے، یہ ترقی کے عمل کو آسان بناتی ہیں۔ ڈویلپرز کو ہر بار پہیہ دوبارہ ایجاد کرنے کی ضرورت نہیں پڑتی، بلکہ وہ کئی پروجیکٹس میں وہی API استعمال کر سکتے ہیں۔ اس سے ترقی کا عمل تیز ہوتا ہے اور وقت کے ساتھ لاگت بھی بچتی ہے۔ APIs کے ذریعے ایپس ایک دوسرے کے اندرونی عمل میں مداخلت نہیں کرتیں، بلکہ صرف مطلوبہ ڈیٹا حاصل کرتی ہیں۔ نتیجتاً سیکیورٹی بہتر ہوتی ہے، غلطیوں کا امکان کم ہوتا ہے، اور پروگرامز زیادہ ہموار طریقے سے کام کرتے ہیں۔
اس کے علاوہ، APIs مختلف سسٹمز کو ان کی بنیادی ٹیکنالوجی اور ساخت سے قطع نظر آپس میں بات چیت کرنے دیتی ہیں۔ صارفین کے لیے APIs کا مطلب زیادہ وسیع فنکشنز تک رسائی ہے۔
جب ہم APIs کی بات کرتے ہیں تو عموماً web APIs مراد ہوتی ہیں، یعنی وہ APIs جن کے لیے انٹرنیٹ کنکشن درکار ہوتا ہے۔ تاہم کچھ APIs ایک ہی سسٹم یا ڈیوائس کے اندر بھی استعمال ہوتی ہیں، مثلاً کمپیوٹر کے آپریٹنگ سسٹم میں، اور انہیں انٹرنیٹ کنکشن کی ضرورت نہیں ہوتی۔ اس مضمون میں ہم web APIs پر توجہ دیں گے۔
APIs کے اجزا
آئیے پردے کے پیچھے ذرا قریب سے دیکھتے ہیں۔ API کہلانے والا یہ کوڈ کن چیزوں سے مل کر بنتا ہے؟
کسی بھی API کے پیچھے بنیادی تصور interoperability ہے۔ دوسرے لفظوں میں، جو بھی پلیٹ فارم منتخب فارمیٹ کو سپورٹ کرتا ہو، اسے API کے ساتھ اسی انداز میں تعامل کرنے کے قابل ہونا چاہیے۔ اسی لیے، مختلف ڈویلپرز اور مختلف پروٹوکولز کے باوجود، APIs کے بنیادی اجزا عموماً ایک جیسے رہتے ہیں۔
API کلائنٹ
API کلائنٹ کوئی بھی ایپ، براؤزر، یا سافٹ ویئر ہو سکتا ہے جو درخواست بھیجتا ہے۔ مختلف چیزیں کلائنٹ کو درخواست بھیجنے پر آمادہ کر سکتی ہیں۔ مثال کے طور پر صارف کا کوئی عمل، جیسے صفحہ ریفریش کرنا یا بٹن دبانا، کلائنٹ سے درخواست بھجوا سکتا ہے۔ پس منظر میں ہونے والی خودکار منطق پر مبنی شرائط، جیسے ڈیٹا بیس سوالات، بھی محرک کا کام کر سکتی ہیں۔
API درخواست
API درخواستوں کو ایک ہی معیار کی پیروی کرنی ہوتی ہے۔ عموماً ان میں پانچ اہم عناصر ہوتے ہیں:
اینڈ پوائنٹس
APIs کے تناظر میں، اینڈ پوائنٹس وہ URLs ہیں جن پر آپ اپنی درخواستیں بھیجتے ہیں۔ یہ جاننے کے لیے کہ کون سے اینڈ پوائنٹس دستیاب ہیں اور آپ کو کون سا فارمیٹ استعمال کرنا چاہیے، API دستاویزات کو احتیاط سے دیکھنا ضروری ہے، جہاں API فراہم کنندہ تمام تفصیلات بتاتا ہے۔ عموماً اینڈ پوائنٹس میں domain name اور API کا version شامل ہوتا ہے جسے آپ استعمال کر رہے ہوتے ہیں۔ ان میں مختلف query parameters بھی شامل ہو سکتے ہیں۔ ایک بار پھر، API دستاویزات دستیاب parameters کے بارے میں معلومات فراہم کرتی ہیں۔
میتھڈ
اپنی درخواست میں آپ کو server کو بتانا ہوتا ہے کہ آپ اس سے کیا کروانا چاہتے ہیں۔ اس لیے method server کے لیے ایک command ہے جو اسے بتاتی ہے کہ کیا کرنا ہے۔ Methods اس API protocol کے لحاظ سے بدلتے ہیں جسے آپ استعمال کر رہے ہیں۔ مثال کے طور پر REST protocol، HTTP methods جیسے GET، POST، PUT، PATCH، اور DELETE استعمال کرتا ہے۔ دوسرے protocols کے اپنے methods ہوتے ہیں۔ اگر آپ API استعمال کرنے جا رہے ہیں تو اس کی documentation پڑھیں، جہاں vendor واضح کرتا ہے کہ یہ خاص API کون سا protocol اور methods استعمال کرتی ہے۔
Parameters
query parameters کے ساتھ path parameters، header parameters، اور request body parameters بھی ہوتے ہیں۔ یہ authentication، آپ کی request کو filter کرنے، اور receiving server کو ضروری details بھیجنے کے لیے ضروری ہوتے ہیں۔ جہاں method server کو بتاتا ہے کہ کیا کرنا ہے، مثلاً data retrieve کرنا، وہیں parameters یہ واضح کرتے ہیں کہ server کو آپ کو کیا pass کرنا چاہیے۔
Headers
API request میں Headers کا روایتی کردار یہ ہے کہ وہ request اور مطلوبہ response formats کے بارے میں اضافی data دیتے ہیں، authorization details فراہم کرتے ہیں تاکہ ثابت ہو سکے کہ آپ requested actions لینے کے مجاز ہیں، اور requests اور responses کو cache کرنے کے طریقے سے متعلق details بتاتے ہیں۔
Request body
یہ آپ کی requests کا مرکزی حصہ ہے، جہاں آپ request parameters کے ذریعے بنیادی data فراہم کرتے ہیں۔ اسے بہتر سمجھنے کے لیے ایک parcel کا تصور کریں۔ Endpoints وہ جگہ ہیں جہاں آپ چاہتے ہیں کہ آپ کا parcel بھیجا جائے۔ Parameters اور headers بھیجنے سے متعلق دوسرا data ہیں، جیسے receiver کا نام اور phone number، ساتھ ہی اضافی details، مثلاً آیا آپ کے parcel میں نازک چیزیں ہیں، delivery paid ہے، یا receiver کو ادائیگی کرنی ہے۔ request body parcel کے box کا content ہے، یعنی وہ چیزیں جو آپ بھیجتے ہیں۔ جیسا کہ بتایا گیا، request body میں مختلف parameters ہوتے ہیں جنہیں API vendor documentation میں specify کرتا ہے۔
API سرور
API server وہ platform، software، database، یا کوئی بھی نظام ہے جسے ہم اپنی requests بھیجتے ہیں۔ یہی API فراہم کرتا ہے، تمام API data محفوظ رکھتا ہے، اور وہ actions انجام دیتا ہے جو ہم اپنی requests میں specify کرتے ہیں۔
API جواب
جہاں request ہوتی ہے، وہاں response بھی ہوتا ہے۔ response وہ جواب ہے جو server آپ کی request پر بھیجتا ہے۔ Responses بھی کئی بنیادی اجزا پر مشتمل ہوتے ہیں۔
Status code
Status code بتاتا ہے کہ ہماری request کامیاب ہوئی یا نہیں، اور server اسے handle کر سکا یا نہیں۔ 200s میں codes کا مطلب ہے کہ request کامیاب تھی، 300s کا مطلب redirecting ہے، 400s اشارہ کرتے ہیں کہ request میں مسائل تھے، اور 500s کا مطلب ہے کہ server کی side پر کوئی problem تھی۔
Response headers
Response headers، request headers سے ملتے جلتے ہیں۔ وہ client کو cookies بھیجتے ہیں اور response body کے بارے میں details فراہم کرتے ہیں۔
Response body
Response body عموماً key/value pairs کی ایک series پر مشتمل ہوتی ہے جو requested data فراہم کرتی ہے۔ تاہم response body، API response کا لازمی component نہیں ہے۔ اگر آپ چاہتے ہیں کہ server کچھ data retrieve کر کے آپ کو بھیجے، تو آپ کو response ملتا ہے۔ اسی وقت، اگر آپ server پر data delete یا replace کرنے کی کوشش کرتے ہیں تو response body نظر نہیں آئے گی، آپ کو صرف status code ملے گا۔
API protocols
Protocol اصولوں کا ایک set ہے جو define کرتا ہے کہ API کیسے کام کرے گی۔ APIs کے لیے کئی protocols استعمال ہوتے ہیں۔
REST
REST (یا RESTful، The Representational State Transfer) سب سے زیادہ استعمال ہونے والا API protocol ہے۔ تاہم، یہ protocol سے زیادہ ایک architectural style ہے۔ یہ JSON یا XML formats میں data transfer کرنے کے لیے HTTP protocol پر انحصار کرتا ہے۔ Requests ایک دوسرے سے independent ہوتی ہیں، اور responses کو cache کیا جا سکتا ہے۔ سادگی اور scalability، REST کے اہم advantages ہیں، اور اسی لیے یہ web services اور mobile applications کے لیے top choice ہے۔
دوسری طرف، over-fetching یا under-fetching ہو سکتی ہے، یعنی client کو requested سے زیادہ data مل جاتا ہے یا اس کے برعکس تمام necessary data نہیں ملتا۔ نیز، چونکہ REST، HTTP protocol استعمال کرتا ہے، یہ ہر data type، application، اور environment کے لیے suitable نہیں ہو سکتا۔ REST کے ساتھ security concerns بھی آتے ہیں، اگر اسے درست طریقے سے maintain نہ کیا جائے تو اس میں vulnerabilities ہو سکتی ہیں۔
SOAP
Simple Object Access Protocol، یا SOAP، REST کے مقابلے میں کہیں زیادہ strict اور complex ہے۔ یہ XML data standard استعمال کرتا ہے اور data transferring کے لیے کئی protocols کو support کر سکتا ہے، بشمول HTTP اور SMTP۔ یہ WS-Security جیسی advanced security features کو support کرتا ہے۔ اسے بنیادی طور پر ایسے cases میں استعمال کیا جاتا ہے جہاں وسیع audience کے لیے usability کے بجائے security اور formality درکار ہوتی ہے، جیسے financial services یا Salesforce جیسی enterprise applications۔
RPC
remote procedure call protocol، JSON اور XML formats میں data handle کرتا ہے۔ تاہم، یہ REST اور SOAP سے کافی مختلف ہے کیونکہ یہ data source کے بجائے method کو call کرتا ہے۔ RPC response بتاتا ہے کہ کوئی action trigger ہوا یا ناکام رہا۔ چونکہ RPC server کو call کرنے سے server کی state بدلتی ہے، vendors اور users کے درمیان high level security ضروری ہوتی ہے۔ اسی وجہ سے RPC APIs اکثر private ہوتی ہیں۔ تاہم، RPC data transfer کرنے کے لیے HTTP/2 protocol پر انحصار کرتا ہے، جو majority of browsers میں natively supported نہیں ہے، اس لیے آپ کو یہ یقینی بنانے کے لیے additional equipment کی ضرورت ہو سکتی ہے کہ یہ درست طریقے سے کام کرے۔
GraphQL
اگرچہ GraphQL کو protocol کہا جاتا ہے، یہ دراصل ایک query language ہے۔ REST کے برعکس، جس کے numerous endpoints ہوتے ہیں، GraphQL عموماً صرف ایک endpoint رکھتا ہے۔ GraphQL ایک single query میں multiple requests کرنا possible بناتا ہے۔ Users specify کر سکتے ہیں کہ انہیں کون سا data چاہیے، جس سے over- یا under-fetching روکی جاتی ہے۔ دوسری طرف، GraphQL کو data caching کے معاملے میں کچھ challenges درپیش ہوتے ہیں۔ نیز، vendors کو extensive documentation فراہم کرنی چاہیے تاکہ users کو بتایا جا سکے کہ query بنانے کے لیے کون سے parameters موجود ہیں۔
APIs کی اقسام
APIs کو categorize کرنے کے کئی طریقے ہیں، مثلاً target audience کے لحاظ سے یا structure کے لحاظ سے۔ اگر audience کو دیکھا جائے تو APIs public، partner، اور private ہو سکتی ہیں۔ structure کے لحاظ سے وہ composite، unified، microservices، اور monolithic ہو سکتی ہیں۔
Public APIs
open یا external بھی کہلانے والی public APIs وسیع audience کے لیے design کی جاتی ہیں۔ ان پر کوئی restrictions نہیں ہوتیں یا بہت کم ہوتی ہیں۔ اگر انہیں authentication یا registration کی ضرورت بھی ہو تو یہ process آسان ہوتا ہے، اور users کو API استعمال کرنے کے لیے کسی خاص qualifications کی ضرورت نہیں ہوتی۔ تاہم open APIs پھر بھی payments کا تقاضا کر سکتی ہیں یا free accounts کے لیے features کو limit کر سکتی ہیں۔ مثال کے طور پر Google Maps API ایک public API ہے۔
Private API
اس type کی API کو internal API بھی کہا جاتا ہے۔ یہ users کے ایک small group کو target کرتی ہے، جیسے company کے اندر موجود لوگ۔ Users کو ایسی APIs تک access کے لیے permission درکار ہوتی ہے۔ انہیں secure ہونا چاہیے، اس لیے authentication میں وقت لگ سکتا ہے اور یہ complex ہو سکتی ہے۔
Partner API
Partner APIs، public اور private APIs کے درمیان آتی ہیں۔ ان کا primary use case دو companies یا businesses کے درمیان data share کرنا ہے، اس لیے ایسی APIs کو پھر بھی authentication کی ضرورت ہوتی ہے اور یہ secure ہوتی ہیں۔ یہ users کے ایک group کو بھی target کرتی ہیں، مگر یہ group private APIs کے case کے مقابلے میں بڑا ہوتا ہے۔ ایسی APIs کے ذریعے share کی گئی information اہم ہوتی ہے اور یقیناً broad audience کے لیے نہیں ہوتی، مگر یہ پھر بھی private APIs کے ذریعے share کیے گئے data جتنی secret نہیں ہوتی۔
نیز، کبھی کبھی ایک چوتھی type، OpenAPI Standard، کا ذکر کیا جاتا ہے۔ تاہم، یہ API کی کوئی الگ type نہیں بلکہ public APIs لکھنے کے لیے ایک framework ہے۔ اس کا original name Swagger تھا، اور یہ tool guidelines فراہم کرتا ہے، اس لیے API لکھنا اور پھر اسے استعمال کرنا simpler اور faster ہو جاتا ہے۔ تاہم، public APIs کو ” open APIs” کہنا بھی inaccurate ہے، کیونکہ تمام public APIs standard کو follow نہیں کرتیں۔ نیز، private APIs publicly available نہ ہونے کے باوجود OpenAPI standard استعمال کر سکتی ہیں۔
Monolithic APIs
ایسی APIs ایک single codebase کے طور پر create کی جاتی ہیں جو complex source تک access دیتی ہے۔ ان کے advantages میں predictable functionality اور stability شامل ہیں۔ دوسری طرف انہیں scale یا update کرنا مشکل ہے، کیونکہ بہت سا data connected ہوتا ہے، اور changes کے unpredictable consequences ہو سکتے ہیں۔
Microservices APIs
اس کے برعکس، microservices APIs میں ہر API ایک الگ اور specific purpose پورا کرتی ہے۔ انہیں update کرنا یا ان parts کو بند کرنا easy ہے جن کی اب ضرورت نہیں رہی، whole system کو متاثر کیے بغیر۔ تاہم، microservices APIs individual requests کی enormous amount پیدا کرتی ہیں۔
Composite APIs
یہاں composite APIs کام آتی ہیں۔ وہ single call میں multiple endpoints کو target کر سکتی ہیں، calls کے سب سے effective set کی شناخت کرتی ہیں، آپ کو necessary data دیتی ہیں، اور duplicate code کو روکتی ہیں۔
Unified APIs
Unified APIs، composite APIs سے ملتی جلتی ہیں؛ single API پر different endpoints کو request کرنے کے بجائے، وہ مختلف APIs کو request کرتی ہیں۔ انتخاب آپ کی needs پر depend کرتا ہے۔
API testing اور monitoring
کسی بھی دوسرے software کی طرح، APIs کو stability، security، اور high-level performance یقینی بنانے کے لیے testing اور monitoring کی ضرورت ہوتی ہے۔ آپ APIs کو manually test کر سکتے ہیں یا automated testing کر سکتے ہیں۔ API testing کی کئی types ہیں:
- functional testing: یہ یقینی بنانے کے لیے کہ server requests کا جواب دیتا ہے اور responses اور data formats درست ہیں؛
- load testing: یہ validate کرنے میں مدد دیتی ہے کہ traffic کے spikes آنے پر API درست طریقے سے کام کرتی ہے یا نہیں؛
- security testing: یہ یقینی بنانے کے لیے ضروری ہے کہ scammers کے لیے کوئی loopholes باقی نہ رہیں؛
- regression testing: جب changes کیے جاتے ہیں تو regression testing ضروری ہوتی ہے تاکہ یقین ہو سکے کہ کوئی unexpected اور unwanted consequences پیش نہیں آتے؛
- fault tolerance testing: یہ verify کرنے کے لیے اچھی ہے کہ system potentially harmful requests، جیسے وہ جو DDoS attack کا باعث بن سکتی ہیں، پر کیسے response دیتا ہے۔
Developers، development اور deployment دونوں stages کے دوران API testing کرتے ہیں۔
خلاصہ
API ایک ایسا tool ہے جو آپ کو technologies سے زیادہ سے زیادہ فائدہ اٹھانے میں مدد دیتا ہے۔ اگرچہ آپ اکثر اسے جانے بغیر استعمال کرتے ہیں، آپ کی favorite website یا app پر کئی functions APIs ہی کی بدولت possible ہوتے ہیں۔ اسی طرح DataImpulse ہمیشہ technologies کو plain English میں explain کرنے کے لیے موجود ہے، تاکہ آپ comfortable محسوس کریں۔ نیز، ایک tool کو دوسرے سے power کرنا آپ کو best result دے سکتا ہے۔ مثال کے طور پر، API testing proxies کے ساتھ بہت زیادہ fruitful ہو جاتی ہے۔ ہم نے اپنی API بھی develop کی ہے، تاکہ آپ اسے ہماری proxies resell کرنے اور ہمارے ساتھ money make کرنے کے لیے استعمال کر سکیں۔ مزید جاننے کے لیے، ہمیں [email protected] پر لکھیں یا screen کے top-right corner میں “ابھی آزمائیں” button دبائیں۔
