Heck คืออะไร API?
เหตุใดการใช้ API ในโค้ดของคุณจึงเหมือนกับการเล่นเลโก้
คุณอาจเคยได้ยินคำว่า “API” ในบทช่วยสอนการเขียนโค้ดส่วนใหญ่ที่คุณเคยอ่าน หากคุณใช้ Google “API”คุณจะได้รับย่อหน้าขนาดใหญ่เกี่ยวกับความหมายของ “Application Programming Interface” และคำอธิบายเกี่ยวกับ “REST” และ “โปรโตคอล” และอื่นๆ ราวกับว่าจะทำให้ชัดเจนยิ่งขึ้น
สิ่งที่คุณต้องรู้เกี่ยวกับ API คือรายการฟังก์ชันที่คุณสามารถใช้เพื่อทำงานอัตโนมัติและรับข้อมูล ตัวอย่างเช่น คุณสามารถ:
- ใช้Gmail APIเพื่อทำการอ่านและกรองกล่องจดหมายของคุณโดยอัตโนมัติด้วยโค้ด
- ใช้Reddit APIเพื่อสร้างบอทที่แปลงหน่วยเมตริกเป็นอิมพีเรียลโดยอัตโนมัติด้วยโค้ด
- ใช้Fitbit API เพื่อดึงข้อมูลจาก Fitbit และส่งไปยังแอปที่กำหนดเองในโทรศัพท์ของคุณ
ในแนวทางเดียวกัน API มีโค้ดเล็กๆ ที่ช่วยให้คุณสามารถสร้างโปรแกรมได้ พวกเขามีฟังก์ชั่นเช่น:
getLikeCount()createGoogleSheet()sendEmail()
เราจะรู้ได้อย่างไรว่า "ชิ้นส่วนรหัส" เหล่านี้คืออะไร?
API ทุกรายการมาพร้อมกับเอกสารประกอบที่แสดงวิธีการใช้งานทั้งหมด ซึ่งคล้ายกับแคตตาล็อกของ LEGO มันแสดงทุกสิ่งที่คุณสามารถทำได้ด้วย API ซึ่งสำหรับReddit APIอาจเป็น "โพสต์ความคิดเห็น" หรือ "บันทึกโพสต์" เอกสารมักพบได้ทางออนไลน์บนเว็บไซต์ของบริษัท โดยปกติแล้วจะพบในหน้านักพัฒนาที่ซ่อนอยู่ “ สิ่งที่คุณสามารถทำได้”เรียกว่า“วิธีการ API”
เอกสารบางอย่างดีกว่าเอกสารอื่นๆแต่ท้ายที่สุดแล้ว เอกสารคือรายการของโค้ดและฟังก์ชันที่สร้างไว้ล่วงหน้าซึ่งคุณสามารถใช้ในโค้ดของคุณเองได้
API ที่ง่ายที่สุด: รับที่อยู่ IP ของคุณ
มาดู API ที่มีเพียงส่วนเดียว: IPify APIซึ่งจะบอกคุณว่าที่อยู่ IP ของคุณคืออะไร
ที่อยู่ IPเปรียบเสมือนหมายเลขโทรศัพท์หรือที่อยู่ทางไปรษณีย์สำหรับคอมพิวเตอร์ของคุณ มันบอกอินเทอร์เน็ตที่จะหาคุณ เว็บไซต์มีที่อยู่ IP ของตัวเองเช่นกัน
เราจะส่งคำสั่งหนึ่งไปยังIPify.orgและถามว่าที่อยู่ IP ของเราคืออะไร ใช้ได้กับทั้ง Mac OS และ Windows
เปิดTerminal (Mac) หรือCommand Prompt (Windows) แล้วพิมพ์ดังต่อไปนี้:
curl 'https://api.ipify.org?format=json'
What the command looks like in Terminal on a MacBook.
{"ip": "68.142.10.250"}
หากต้องการยืนยันว่า นี่คือ IP จริงของคุณ โปรดไปที่WhatIsMyIPAddress.com
JSON เป็นหนึ่งในรูปแบบข้อมูลที่ได้รับความนิยมสูงสุดสำหรับ API เว็บสมัยใหม่ ทำให้ทุกอย่างอยู่ใน{“key”: value}รูปแบบเพื่อให้ข้อมูลทั้งหมดมีป้ายกำกับ API อื่นๆ อาจใช้XMLซึ่งมี<Key>value</Key>รูปแบบคล้ายกัน และ API จำนวนมากให้คุณเลือกระหว่างทั้งสอง
นี่คือส่วนสำคัญของเว็บ API จำนวนมาก เราขอข้อมูลบางอย่างจากเว็บไซต์และตอบกลับด้วยข้อมูลนั้น API ทั่วไปในการวิจัยทางวิทยาศาสตร์ เช่นNASA , USGSและUSFDA API ทำงานด้วยวิธีนี้ เราสามารถรับข้อมูลเกี่ยวกับดาวเทียมในอวกาศ ระดับความสูงของภูเขาในสหรัฐอเมริกา และรายชื่อยาที่ได้รับการอนุมัติจาก FDA หากเราเพียงแค่ขอ
สิ่งที่เกี่ยวกับการทำกิจกรรมของผู้ใช้โดยอัตโนมัติ?
ถ้าเราไม่ต้องการแค่ดึงข้อมูลจากเว็บไซต์ล่ะ แล้วการสร้างบอทหรือทำให้วันทำงานของเราเป็นอัตโนมัติล่ะ?
นี่คือที่มาของ API ที่ซับซ้อนมากขึ้น พวกเขายังคงใช้คำสั่งเอกพจน์เมื่อเราพูดคุยกับเว็บไซต์หรือแอพและพูดว่า "ฉันต้องการรับข้อมูลนี้ (หรือส่งข้อมูลนี้)" และแอพก็ตอบสนองตามนั้น แต่ตอนนี้เรากำลังรวมคำสั่งหลายคำสั่งเข้าด้วยกันเพื่อทำกิจกรรมที่ซับซ้อนยิ่งขึ้น
ตัวอย่างหลายขั้นตอน: Reddit API
Reddit เป็นฟอรัมออนไลน์ที่ใหญ่ที่สุดในโลก Reddit โพสต์ API ของพวกเขาทางออนไลน์และแสดงรายการทุกสิ่งที่คุณสามารถทำได้ด้วย API ของพวกเขาในแถบด้านข้างทางด้านซ้าย
ในแถบด้านข้างเป็นวิธีการที่เราสามารถใช้เพื่อรับรายชื่อเพื่อน กรรม ถ้วยรางวัล และอื่นๆ ทุกๆ การกระทำที่ผู้ใช้สามารถทำได้บนเว็บไซต์จะมีวิธี API ที่สอดคล้องกัน
หากเราไปที่หน้า Reddit APIและเลื่อนลงมา จะมีส่วนลิงก์ & ความคิดเห็นที่แสดงการโต้ตอบตามปกติของผู้ใช้และวิธีการ API ที่เกี่ยวข้อง เราสามารถใช้สิ่งเหล่านี้เพื่อสร้างบัญชีบอทหรือสิ่งที่คล้ายกัน
เรามีปฏิสัมพันธ์กับผู้ใช้ทุกวัน เช่นแสดงความคิดเห็น ( ) /api/commentติดตามและบันทึกโพสต์ Reddit API ทำให้สามารถทำสิ่งเหล่านี้ได้ด้วยโค้ด คำนำ/api/หน้าของวิธีการทั้งหมดดูแปลกๆ แต่เดี๋ยวเราจะอธิบายให้ฟัง
ในทางตรงกันข้าม Google Search APIมีเพียงวิธีเดียวคือการค้นหา :
Google Search API นั้นเรียบง่ายเพราะ Google รู้ว่ามีสิ่งเดียวที่โปรแกรมเมอร์สนใจที่จะทำกับ Google Search นั่นคือการค้นหา
นี่คือเป้าหมายของทุก API เพื่อต้มกิจกรรมและตัวเลือกทั้งหมดจากเว็บไซต์หรือแอปปกติให้เป็นฟังก์ชันพร้อมโค้ด "one liner" ประเภทนี้ที่เราสามารถใช้ได้จาก Python, JavaScript, Bash, Java, R และอื่น ๆ .
- API ของเว็บไซต์ต้องการให้คุณสามารถโต้ตอบกับผู้ใช้ได้ตามปกติ (เข้าสู่ระบบ แสดงความคิดเห็น ค้นหา ลบสิ่งต่างๆ) โดยใช้รหัสน้อยที่สุด
- API ที่สวมใส่ได้ต้องการให้คุณสามารถดึงข้อมูล ส่งการแจ้งเตือนไปยังผู้สวมใส่ หรือเปลี่ยนการตั้งค่าบนอุปกรณ์ที่สวมใส่ได้โดยใช้รหัสน้อยที่สุดเท่าที่จะเป็นไปได้
การใช้ API มีลักษณะอย่างไรในโค้ด
แล้วสิ่งนี้มีลักษณะอย่างไรในรหัส? Reddit API กล่าวว่าวิธีการแสดงความคิดเห็นเรียก/api/commentว่า นั่นหมายความว่าอย่างไร? เราไม่สามารถใส่/api/commentไฟล์ Python แล้วเรียกว่าวันได้ใช่ไหม ขวา.
มีความแตกต่างเล็กน้อยระหว่างการใช้ API เพื่อพูดคุยกับเว็บไซต์กับการใช้ API ของอุปกรณ์ที่สวมใส่ได้ พวกเขาทั้งสองยังคงเหมือน LEGO ตรงที่อนุญาตให้คุณทำสิ่งที่ซับซ้อนด้วยโค้ดไม่กี่บรรทัด แต่ตัวโค้ดนั้นดูแตกต่างออกไปมาก ดังนั้น เราจะให้ตัวอย่างแยกต่างหากสำหรับพวกเขา
เชิงลึกเพิ่มเติม: Web APIs ในโค้ด
เราเห็นว่าเมธอด Reddit API แสดงรายการด้วยเครื่องหมายทับ:
ดูไม่เหมือน Python หรือ JavaScript หรือโค้ดเลย มันบอก/api/ว่า ? นั่นคืออะไร?
สิ่งเหล่านี้คือส่วนหนึ่งของลิงก์ HTTPเช่นเดียวกับที่คุณพิมพ์ลงใน Chrome หรือ Firefox
ทำไมต้องลิงค์เว็บ? เราใส่โดยตรงในรหัสของเราหรือไม่ ใช่และด้วยเหตุผลที่ดี
เมื่อเราใช้ API ของเว็บ เช่น Reddit, Gmail หรือแม้แต่API ของ NIH หรือ NASAโค้ดของเราจะพูดคุยกับเว็บไซต์โดยพื้นฐานแล้ว เว็บไซต์ใช้links/that/look/like/thisเพื่อแยกหน้าและหน้าที่ของตน Google อยู่ที่google.comแต่ผลการค้นหาอยู่google.com/searchที่
เราจะลงเอยด้วยการใส่จุดสิ้นสุดนั้นในโค้ดของเราดังนี้:
google_search_api = "https://www.googleapis.com/customsearch/"
ตอนนี้ โค้ดไม่ได้พูดคุยกับเว็บไซต์จริงๆ แต่ เป็นเซิร์ฟเวอร์ (เช่น เว็บไซต์ที่ไม่มีส่วนหัว) แต่พวกมันจัดระเบียบสิ่งเดียวกันด้วย/slashes/เท่าที่ API ดำเนินไป เช่นเดียวกับเมื่อคุณโพสต์บล็อกในฐานะผู้ใช้ทั่วไปไปยังเว็บไซต์จากหน้าเว็บwebsite.com/postโค้ดของคุณอาจพูดคุยกับจุดสิ้นสุดการโพสต์บล็อกของเซิร์ฟเวอร์ API ที่api.website.com/postหรือwebsite.com/api/postอื่นๆ ในทำนองเดียวกัน
คิดดังนี้ เมื่อคุณตรวจสอบกล่องจดหมาย Gmail บนแล็ปท็อปหรือโทรศัพท์เบราว์เซอร์ของคุณจะ:
- เข้าถึงผ่านอินเทอร์เน็ตเพื่อ
gmail.com - พูดกับ
gmail.com"ฉันขอหน้าเว็บภายใต้ ได้/mail/inboxไหม" - จากนั้น Gmail จะส่งหน้าเว็บสำหรับกล่องจดหมายของคุณกลับไปที่เบราว์เซอร์ของคุณ เพื่อให้คุณดูได้
- เอื้อมมือออกไป
gmail.googleapis.com - สอบถาม
gmail.googleapis.comอินบ็อกซ์อีเมลของคุณ - จากนั้น Gmail API จะส่งกลับเฉพาะข้อมูลแทนที่จะส่งทั้งเว็บไซต์
ข้อมูลบริสุทธิ์นั้นเป็นมิตรกับโค้ดและนั่นคือสิ่งที่ API สร้างขึ้น
ตัวอย่าง: รับยาจาก openFDA API
นี่คือตัวอย่าง Python สั้นๆ สำหรับการสืบค้น openFDA APIของ USFDA ซึ่งแสดงรายการยาที่ได้รับการอนุมัติจาก FDA ทั้งหมด:
# import an HTTP library
import requests
# Tell "requests" to request data from the openFDA "Drugs" endpoint
drugs_http_endpoint = "https://api.fda.gov/drug/label.json?limit=100"
drugs = requests.get(drugs_http_endpoint)
# Print all the data that we got from USFDA about drugs
print(drugs.json())
หมายเหตุ:ตัวอย่างด้านบนใช้requests ไลบรารี HTTP ยอดนิยม สำหรับ Python
แล้ว API สำหรับ Bluetooth และอุปกรณ์สวมใส่ล่ะ
การใช้ API ของอุปกรณ์ที่สวมใส่ได้ (เช่น Fitbit หรือ Apple Watch) จะแตกต่างจากการใช้ API ของเว็บไซต์เล็กน้อย แต่มีการบันทึกไว้เหมือนกัน ตัวอย่างเช่น แทนที่จะใช้ วิธี "แสดงความคิดเห็น" API ที่สวมใส่ได้อาจมีวิธีการต่อไปนี้:
- รับอัตราการเต้นของหัวใจ
- รับข้อมูลการเคลื่อนไหว (จากมาตรความเร่งและไจโรสโคป)
- ส่งการแจ้งเตือนให้ผู้ใช้
ตัวอย่างที่สวมใส่ได้: Fitbit API
แทนที่จะต้องค้นหาข้อมูลจากบางเว็บไซต์ คุณอาจต้องการเขียนโค้ดสำหรับอุปกรณ์เฉพาะเช่นFitbit
Fitbit APIมีหลายส่วน มันยังมี Web API ของตัวเองอีกด้วย
มาดูส่วนใดส่วนหนึ่งของDevice APIกัน
ในหน้า Device APIแถบด้านข้างซ้ายจะแสดงรายการ API ทั้งหมดที่เราสามารถโต้ตอบด้วยได้
แต่ละหมวดหมู่ที่ใหญ่ขึ้นเหล่านี้เป็นคอลเลกชั่นชิ้นส่วนเลโก้ซึ่งชิ้นส่วนเหล่านี้เราสามารถอ่านเพิ่มเติมเกี่ยวกับจากนั้นใช้ในรหัสของเราเอง ชิ้นส่วนเลโก้มีลักษณะดังนี้:
- อ่านหนังสือหรือตั้งนาฬิกา
- การอ่านมาตรความเร่ง (ส่วนหนึ่งของตัวติดตามการเคลื่อนไหว)
- การอ่านเครื่องวัดอัตราการเต้นของหัวใจฯลฯ
มีข้อมูลมากมาย แต่หน้านี้มีสคริปต์ตัวอย่างสั้นๆ แล้วแสดงรายการชิ้นส่วน LEGO ที่เกี่ยวข้องกับอัตราการเต้นของหัวใจที่เราสามารถใช้ในโค้ดของเราเองได้:
activated(บอกเราว่าเซ็นเซอร์วัดอัตราการเต้นของหัวใจเปิดอยู่หรือไม่)heartRate(บอกอัตราการเต้นของหัวใจปัจจุบัน)onactivate(ฟังก์ชั่นที่เราสามารถใช้เพื่อบอก Fitbit ว่าควรทำอะไรทันทีที่เปิดใช้งานเซ็นเซอร์วัดอัตราการเต้นของหัวใจ)
ใน pseudocode ข้างต้นหมายถึง:
import HeartRateSensor code from Fitbit's API
if HeartRateSensor was imported {
hrm = the HeartRateSensor
Listen for heart rate sensor to send data, then print it.
Start the heart rate sensor (which will then start the above "Listen" code)
}
หากคุณติดขัดขณะใช้ API โดยทั่วไปแล้วบริษัทที่ผลิต API จะมีเอกสารออนไลน์ที่คุณสามารถใช้ Google ได้ (ตัวอย่าง: การค้นหา “Fitbit API” จะแสดง Fitbit API จริงเป็นผลการค้นหาอันดับต้น ๆ) หากไม่ทำเช่นนั้น คุณสามารถติดต่อบริษัทโดยตรงเพื่อสอบถามว่ามีเอกสาร API ที่สามารถส่งได้หรือไม่
ในบางกรณีเอกสาร API อาจทำให้ผิดหวังอย่างแท้จริงซึ่งนำไปสู่ความยุ่งยากในชุมชนนักพัฒนา แต่นั่นเป็นโอกาสที่จะมีส่วนร่วมและเติมเต็มช่องว่างหรือสร้างผลิตภัณฑ์ที่ดีกว่าของคุณเอง
สรุป
วิศวกรเขียน API โดยหวังว่าคุณจะพัฒนาและใช้แอป ชุดข้อมูล และอุปกรณ์สวมใส่ ตอนนี้คุณเข้าใจ API แล้วลองดู API ยอดนิยมเหล่านี้เพื่อเริ่มต้น บ่อยครั้งกว่านั้น เทคโนโลยีและแอพที่คุณโปรดปรานล้วนมี API ที่คุณสามารถใช้ในโครงการต่อไปของคุณได้
หากคุณมีคำถามหรือข้อเสนอแนะ โปรดส่งอีเมลถึงเราที่[email protected] หรือส่งข้อความถึงเราบนInstagram (@protobioengineering) ขอบคุณที่อ่าน.
ลิงก์ที่เกี่ยวข้อง
- GitHub สำหรับนักชีววิทยา
- Dataverse API: ข้อมูลการวิจัยโอเพ่นซอร์สและซอฟต์แวร์
- บุรุษไปรษณีย์: สร้างและทดสอบ API





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)