22 กุมภาพันธ์ 2563

Published กุมภาพันธ์ 22, 2563 by with 0 comment

FastAPI - Framework สร้าง API ด้วย Python ที่ทั้งง่ายและเร็ว

FastAPI เป็น Framework สำหรับ API ที่ชูเรื่องมีประสิทธิภาพสูง, ง่ายที่จะสร้าง, โค้ดได้เร็ว และพร้อมสำหรับผลิตภัณฑ์จริง (high performance, easy to learn, fast to code, ready for production) โดยสร้างด้วยภาษา Python แถมเป็น MIT License ด้วย


เราสามารถสร้าง API ด้วย FastAPI ได้ด้วยภาษา Python โดยใช้ไวยากรณ์ type hints ของ Python 3.6 ขึ้นไป

โดย FastAPI มีคุณสมบัติน่าสนใจอย่างมากดังนี้
  • เป็น MIT License
  • รองรับการสร้าง API หลากหลายรูปแบบ แถมรองรับ OAuth2 ด้วย
  • มีระบบสร้างเอกสาร API แบบอัตโนมัติ ที่สามารถทดลอง API ได้ผ่านหน้าเว็บเอกสาร
  • API เข้ากันได้กับ OpenAPI และ JSON Schema

การติดตั้ง FastAPI

สามารถติดตั้ง FastAPI ได้ผ่านคำสั่ง pip install fastapi
หากต้องการเปิด ASGI server (Asynchronous Server Gateway Interface) หากต้องใช้โมดูล Uvicorn หรือ Hypercorn เข้ามาช่วย
ในที่นี้เลือก Uvicorn ซึ่งเป็น ASGI server ในภาษา Python สามารถติดตั้งได้ผ่านคำสั่ง pip install uvicorn

ทดลองสร้าง API ด้วย FastAPI บน Python

เรามาลองยกตัวอย่างจริง ๆ กันดีกว่า สมมติ เราต้องการสร้าง API สำหรับตัดคำภาษาไทย ซึ่งปัจจุบันมีโมดูลอย่าง PyThaiNLP ใน Python แต่ยังไม่มีใครทำเป็น API เราสามารถสร้าง API ตัดคำภาษาไทยได้ด้วยตนเอง โดยใช้ FastAPI เพื่อปรับใช้ภายในองค์กรหรือความต้องการของตนเองได้ดังตัวอย่างนี้

สร้างไฟล์ main.py ขึ้นมา เพื่อใช้รันกับ Uvicorn
from fastapi import FastAPI
from pythainlp.tokenize import word_tokenize # ติดตั้งด้วยคำสั่ง pip install pythainlp

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/word_tokenize/{text}")
def read_word(text: str):
    return {"word": word_tokenize(text)}

บันทึกไฟล์ แล้วเปิด cmd หรือเทอร์มินัล รันด้วยคำสั่ง
uvicorn main:app --reload
ลองเข้าไปที่ http://127.0.0.1:8000/ จะพบกับ {"Hello": "World"}

ลองยิงคำสั่ง API ตัดคำที่เราสร้างขึ้นมา โดยยิง
http://127.0.0.1:8000/word_tokenize/ทดสอบตัดคำภาษาไทยด้วย FastAPI ใน Python
ผลลัพธ์
{"word":["ทดสอบ","ตัด","คำ","ภาษาไทย","ด้วย"," ","FastAPI"," ","ใน"," ","Python"]}
จะเห็นได้ว่า API ตัดคำภาษาไทยที่สร้าง API ด้วย FastAPI บน Python สามารถใช้งานได้จริงในเวลาอันสั้นมาก

ต่อมา เรามาลองระบบสร้างเอกสาร API แบบอัตโนมัติของ FastAPI กัน โดยเข้าไปที่
http://127.0.0.1:8000/docs
จะพบกับหน้าเอกสารทาง FastAPI สร้างให้
หน้าเอกสารทาง FastAPI จาก API ที่สร้างด้วย Python

พอคลิกที่ GET ​/word_tokenize​/{text} Read Item จะแสดงรายละเอียด API ให้เรา
รายละเอียด API ในหน้าเอกสารทาง FastAPI จาก API ที่สร้างด้วย Python

ลองเล่น API โดยกด Try it out โดยลองพิมพ์ข้อความที่ต้องการตัดคำ แล้วกด Execute
ทดลองเล่น API ในหน้าเอกสารทาง FastAPI จาก API ที่สร้างด้วย Python

ผลลัพธ์
ผลลัพธ์การทดลองเล่น API ในหน้าเอกสารทาง FastAPI จาก API ที่สร้างด้วย Python


เข้าไปอ่านเอกสาร FastAPI เพื่อให้เข้าใจการสร้าง API ด้วย Python กับ FastAPI มากขึ้นได้ที่ https://fastapi.tiangolo.com/

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)