Heck คืออะไร API?

Mar 20 2023
เหตุใดการใช้ API ในโค้ดของคุณจึงเหมือนกับการเล่นเลโก้ คุณอาจเคยได้ยินคำว่า “API” ในบทช่วยสอนการเขียนโค้ดส่วนใหญ่ที่คุณเคยอ่าน

เหตุใดการใช้ API ในโค้ดของคุณจึงเหมือนกับการเล่นเลโก้

ภาพถ่ายโดย Xavi Cabrera บน Unsplash

คุณอาจเคยได้ยินคำว่า “API” ในบทช่วยสอนการเขียนโค้ดส่วนใหญ่ที่คุณเคยอ่าน หากคุณใช้ Google “API”คุณจะได้รับย่อหน้าขนาดใหญ่เกี่ยวกับความหมายของ “Application Programming Interface” และคำอธิบายเกี่ยวกับ “REST” และ “โปรโตคอล” และอื่นๆ ราวกับว่าจะทำให้ชัดเจนยิ่งขึ้น

สิ่งที่คุณต้องรู้เกี่ยวกับ API คือรายการฟังก์ชันที่คุณสามารถใช้เพื่อทำงานอัตโนมัติและรับข้อมูล ตัวอย่างเช่น คุณสามารถ:

  • ใช้Gmail APIเพื่อทำการอ่านและกรองกล่องจดหมายของคุณโดยอัตโนมัติด้วยโค้ด
  • ใช้Reddit APIเพื่อสร้างบอทที่แปลงหน่วยเมตริกเป็นอิมพีเรียลโดยอัตโนมัติด้วยโค้ด
  • ใช้Fitbit API เพื่อดึงข้อมูลจาก Fitbit และส่งไปยังแอปที่กำหนดเองในโทรศัพท์ของคุณ
  • เราจะใช้ API สำหรับฟอรัมเช่น Reddit ได้อย่างไร ภาพต้นฉบับโดย Xavi Cabrera บน Unsplash
ไซต์และแคตตาล็อก Pick a Brick ของ LEGO

ในแนวทางเดียวกัน API มีโค้ดเล็กๆ ที่ช่วยให้คุณสามารถสร้างโปรแกรมได้ พวกเขามีฟังก์ชั่นเช่น:

  • getLikeCount()
  • createGoogleSheet()
  • sendEmail()

เราจะรู้ได้อย่างไรว่า "ชิ้นส่วนรหัส" เหล่านี้คืออะไร?

API ทุกรายการมาพร้อมกับเอกสารประกอบที่แสดงวิธีการใช้งานทั้งหมด ซึ่งคล้ายกับแคตตาล็อกของ LEGO มันแสดงทุกสิ่งที่คุณสามารถทำได้ด้วย API ซึ่งสำหรับReddit APIอาจเป็น "โพสต์ความคิดเห็น" หรือ "บันทึกโพสต์" เอกสารมักพบได้ทางออนไลน์บนเว็บไซต์ของบริษัท โดยปกติแล้วจะพบในหน้านักพัฒนาที่ซ่อนอยู่ “ สิ่งที่คุณสามารถทำได้”เรียกว่า“วิธีการ API”

Slack 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 ที่ซับซ้อนมากขึ้น พวกเขายังคงใช้คำสั่งเอกพจน์เมื่อเราพูดคุยกับเว็บไซต์หรือแอพและพูดว่า "ฉันต้องการรับข้อมูลนี้ (หรือส่งข้อมูลนี้)" และแอพก็ตอบสนองตามนั้น แต่ตอนนี้เรากำลังรวมคำสั่งหลายคำสั่งเข้าด้วยกันเพื่อทำกิจกรรมที่ซับซ้อนยิ่งขึ้น

ภาพถ่ายโดย Aedrian บน Unsplash

ตัวอย่างหลายขั้นตอน: Reddit API

Reddit เป็นฟอรัมออนไลน์ที่ใหญ่ที่สุดในโลก Reddit โพสต์ API ของพวกเขาทางออนไลน์และแสดงรายการทุกสิ่งที่คุณสามารถทำได้ด้วย API ของพวกเขาในแถบด้านข้างทางด้านซ้าย

ภาพรวมของ API ของ Reddit เว็บไซต์ยอดนิยมส่วนใหญ่จะมีหน้า API (ค่อนข้างซ่อนอยู่)

ในแถบด้านข้างเป็นวิธีการที่เราสามารถใช้เพื่อรับรายชื่อเพื่อน กรรม ถ้วยรางวัล และอื่นๆ ทุกๆ การกระทำที่ผู้ใช้สามารถทำได้บนเว็บไซต์จะมีวิธี API ที่สอดคล้องกัน

หากเราไปที่หน้า Reddit APIและเลื่อนลงมา จะมีส่วนลิงก์ & ความคิดเห็นที่แสดงการโต้ตอบตามปกติของผู้ใช้และวิธีการ API ที่เกี่ยวข้อง เราสามารถใช้สิ่งเหล่านี้เพื่อสร้างบัญชีบอทหรือสิ่งที่คล้ายกัน

รายการสิ่งที่เราสามารถทำได้ในแบบอัตโนมัติหากเราใช้ Reddit API

เรามีปฏิสัมพันธ์กับผู้ใช้ทุกวัน เช่นแสดงความคิดเห็น ( ) /api/commentติดตามและบันทึกโพสต์ Reddit API ทำให้สามารถทำสิ่งเหล่านี้ได้ด้วยโค้ด คำนำ/api/หน้าของวิธีการทั้งหมดดูแปลกๆ แต่เดี๋ยวเราจะอธิบายให้ฟัง

ในทางตรงกันข้าม Google Search APIมีเพียงวิธีเดียวคือการค้นหา :

คำอธิบายของเมธอด "รายการ" (โดยทั่วไปคือ "การค้นหา") จาก Google Search API

Google Search API นั้นเรียบง่ายเพราะ Google รู้ว่ามีสิ่งเดียวที่โปรแกรมเมอร์สนใจที่จะทำกับ Google Search นั่นคือการค้นหา

นี่คือเป้าหมายของทุก API เพื่อต้มกิจกรรมและตัวเลือกทั้งหมดจากเว็บไซต์หรือแอปปกติให้เป็นฟังก์ชันพร้อมโค้ด "one liner" ประเภทนี้ที่เราสามารถใช้ได้จาก Python, JavaScript, Bash, Java, R และอื่น ๆ .

  • API ของเว็บไซต์ต้องการให้คุณสามารถโต้ตอบกับผู้ใช้ได้ตามปกติ (เข้าสู่ระบบ แสดงความคิดเห็น ค้นหา ลบสิ่งต่างๆ) โดยใช้รหัสน้อยที่สุด
  • API ที่สวมใส่ได้ต้องการให้คุณสามารถดึงข้อมูล ส่งการแจ้งเตือนไปยังผู้สวมใส่ หรือเปลี่ยนการตั้งค่าบนอุปกรณ์ที่สวมใส่ได้โดยใช้รหัสน้อยที่สุดเท่าที่จะเป็นไปได้
หากรถคันนี้มี API ก็จะมีแอตทริบิวต์ "ยาง" และ "ไดรฟ์ ()" ภาพถ่ายโดย Eric & Niklas บน Unsplash

การใช้ 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อื่นๆ ในทำนองเดียวกัน

ภาพถ่ายโดย Caspar Camille Rubin บน Unsplash

คิดดังนี้ เมื่อคุณตรวจสอบกล่องจดหมาย Gmail บนแล็ปท็อปหรือโทรศัพท์เบราว์เซอร์ของคุณจะ:

  1. เข้าถึงผ่านอินเทอร์เน็ตเพื่อgmail.com
  2. พูดกับgmail.com"ฉันขอหน้าเว็บภายใต้ ได้/mail/inboxไหม"
  3. จากนั้น Gmail จะส่งหน้าเว็บสำหรับกล่องจดหมายของคุณกลับไปที่เบราว์เซอร์ของคุณ เพื่อให้คุณดูได้
  1. เอื้อมมือออกไปgmail.googleapis.com
  2. สอบถามgmail.googleapis.comอินบ็อกซ์อีเมลของคุณ
  3. จากนั้น 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

Fitbits คืออุปกรณ์สวมใส่ที่ติดตามการออกกำลังกาย อัตราการเต้นของหัวใจ และอื่นๆ ภาพถ่ายโดย Shane บน Unsplash

Fitbit APIมีหลายส่วน มันยังมี Web API ของตัวเองอีกด้วย

Fitbit API มีหลายส่วน ได้แก่ Device API, Settings API, Companion 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 ภาพถ่ายโดย Kelly Sikkema บน Unsplash

หากคุณติดขัดขณะใช้ API โดยทั่วไปแล้วบริษัทที่ผลิต API จะมีเอกสารออนไลน์ที่คุณสามารถใช้ Google ได้ (ตัวอย่าง: การค้นหา “Fitbit API” จะแสดง Fitbit API จริงเป็นผลการค้นหาอันดับต้น ๆ) หากไม่ทำเช่นนั้น คุณสามารถติดต่อบริษัทโดยตรงเพื่อสอบถามว่ามีเอกสาร API ที่สามารถส่งได้หรือไม่

ในบางกรณีเอกสาร API อาจทำให้ผิดหวังอย่างแท้จริงซึ่งนำไปสู่ความยุ่งยากในชุมชนนักพัฒนา แต่นั่นเป็นโอกาสที่จะมีส่วนร่วมและเติมเต็มช่องว่างหรือสร้างผลิตภัณฑ์ที่ดีกว่าของคุณเอง

สรุป

วิศวกรเขียน API โดยหวังว่าคุณจะพัฒนาและใช้แอป ชุดข้อมูล และอุปกรณ์สวมใส่ ตอนนี้คุณเข้าใจ API แล้วลองดู API ยอดนิยมเหล่านี้เพื่อเริ่มต้น บ่อยครั้งกว่านั้น เทคโนโลยีและแอพที่คุณโปรดปรานล้วนมี API ที่คุณสามารถใช้ในโครงการต่อไปของคุณได้

หากคุณมีคำถามหรือข้อเสนอแนะ โปรดส่งอีเมลถึงเราที่[email protected] หรือส่งข้อความถึงเราบนInstagram (@protobioengineering) ขอบคุณที่อ่าน.

ลิงก์ที่เกี่ยวข้อง

  • GitHub สำหรับนักชีววิทยา
  • Dataverse API: ข้อมูลการวิจัยโอเพ่นซอร์สและซอฟต์แวร์
  • บุรุษไปรษณีย์: สร้างและทดสอบ API
  • ภาพถ่ายโดย Phil Hearing บน Unsplash