ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

โดยหลังจากที่เราได้เรียนรู้ขั้นตอนในการ การติดตั้ง ตัว FastAPI กันไปแล้ว เราจะมาแนะนำการใช้งาน 

โดยในบทความนี้ก็จะมาแนะนำการใช้งาน GET Method ใน FastAPI โดย GET จะส่ง-รับ ค่าแบบ query string โดยขั้นตอนมีดังนี้

  • ให้เราทำการเขียนโค้ดตามรูปด้านล่างนี้
import uvicorn

from fastapi import FastAPI


app = FastAPI()


@app.get('/')
async def index():
   return 'Welcome to my fastapi'

if __name__=='__main__':
   uvicorn.run(app, host="0.0.0.0", port=80, debug=True)
  • จากนั้น กด Ctrl + J เพื่อทำการเปิด terminal จากนั้นให้พิมพ์
uvicorn main:app --reload # สั่งรันตัว uvicorn
ทำการสั่งให้ uvicorn ทำงานเพื่อ start server
รันเซิร์ฟเวอร์ ด้วย uvicorn

 

  • จากนั้นให้กด Ctrl ค้าง และคลิกไปที่ ลิงก์ http://127.x.x.x:xxxx ตรง terminal จะปรากฎหน้าบราวเซอร์ขึ้นมา ตามรูปด้านล่างนี้

นำ url ที่ได้มาไปเปิดที่ browser

ทำการไปยังที่อยู่ URL

 

จะเห็นได้ว่าเรามายังที่อยู่ลิงก์ตามที่คลิกตรง terminal และให้ดูตรง "Welcome to my fastapi" ผลลัพธ์จะตรงกับ

@app.get('/')
async def index():
   return ('welcome to my fastapi')

 

 

โดยสาเหตุที่เมื่อเปิดเข้ามาหน้าแรกแล้วขึ้นข้อความแบบนี้ให้เราสังเกตตรง @app.get('/')

ถ้าเราใส่เครื่องหมาย / ตัวเดียว มันหมายถึงเมื่อมีการเข้ามาที่ url นี้และไม่ได้มีกำหนด path ต่อท้ายก็ให้ทำงานตามฟังก์ชันที่เรากำหนด 

  • เรามาดูตัวอย่างกันเพิ่มอีกหน่อย เพิ่มโค้ดดังนี้
@app.get('/fullname/{firstname}/{lastname}')      #ต้องรับ parameter firstname และ lastname
async def read_fullname(firstname: str, lastname: str):  #โดย arguments ที่ต้องการเอามาใส่ตรงนี้
   return firstname, lastname                          #แสดง firstname และ lastname

ทำการเขียนโค้ดเพิ่มเพื่อทำการทดสอบ API

เขียนโค้ดเพิ่มเพื่อทดสอบ GET Method

 

โดยคราวนี้เราจะกดหนด path เป็น /fullname/{firstname}/{lastname} ตามตัวอย่างด้านบน หลังจากนั้นกด Ctrl + s เพื่อทำการ save จากนั้นเรามาดูตัวอย่างกันต่อเลย

ผลลัพธ์จากการที่เราทำการเพิ่มโค้ด
URL จะขึ้นเป็น Query String

 

จะสังเกตว่าเราใส่ path ตามที่เรากำหนดในภาพด้านบน fullname/{firstname}/{lastname} 

  • เราจะมาดูตัวอย่างตัวไป ให้เราเพิ่มโค้ดตามรูปด้านล่าง
@app.get('/plus')
async def plus(a: int, b: int):
   return a + b
ทำการเพิ่มโค้ดเพื่อทำ API สำหรับ บวกเลขและแสดงผลลัพธ์
เพิ่ม API สำหรับบวกเลขและแสดงผลลัพธ์

 

จากนั้นกด Ctrl + s จากนั้นกลับมายัง บราวเซอร์ ให้เราใส่ path เป็น docs ต่อท้าย port ตามรูปด้านล่าง

พิมพ์คำว่า docs ต่อท้าย URL ของเซิร์ฟเวอร์
เปิด document ของ API

 

ในส่วนของหน้านี้ จะเป็นหน้า document ที่ Fastapi สร้างขึ้นมาตาม API ที่เราสร้าง มาลองทดสอบกันเถอะ

คลิก Try it out จากนั้น กรอกเลขตามช่อง จากนั้นกด Execute และดูผลลัพธ์ ด้านล่าง

หน้าฟอร์มจะมีให้กรอก parameter ของ API
ช่องกรอก Parameter ของ API

 

ทำกรอกตัวเลขไปที่ parameter a และ b
ใส่ Parameter a และ b

 

ผลลัพธ์จากการทำ API บวกเลขและแสดงผลลัพธ์
ผลลัพธ์จาก 10+20

 

@app.get('/plus')
async def plus(a: int, b: int):
   return a + b

#ผลลัพธ์ คือ 30
#มาจาก a + b

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

 

อ้างอิง

เล่นกับ Data type UI & API, [ออนไลน์]

แหล่งที่มา: https://dev.to/mrchoke/data-type-ui-api-3i8g

Build API's fast using FastAPI and Python, [ออนไลน์]

แหล่งที่มา: https://python.plainenglish.io/build-apis-fast-using-fastapi-and-python-e83b59031a34

Introducing FastAPI, [ออนไลน์]

แหล่งที่มา: https://tiangolo.medium.com/introducing-fastapi-fdc1206d453f

 

 

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
งานประจำวันที่ 18 พฤษภาคม 2564
โดย Nutcha.tk136 อ 18 พฤษภาคม 2021 9:36 am บอร์ด M136 - ณัชชา เทศเกิด
1
9
อ 18 พฤษภาคม 2021 10:05 am โดย bolue
งานประจำวันที่ 18 พฤษภาคม 2564
โดย topoko123 อ 18 พฤษภาคม 2021 7:21 am บอร์ด M131 - ธันวา เจริญยศ
0
4
อ 18 พฤษภาคม 2021 7:21 am โดย topoko123
งานประจำวันที่ 17 พฤษภาคม 2564
โดย Nutcha.tk136 จ 17 พฤษภาคม 2021 6:05 pm บอร์ด M136 - ณัชชา เทศเกิด
1
11
จ 17 พฤษภาคม 2021 6:28 pm โดย Nutcha.tk136
ติดปัญหาเรื่องโปรแกรมไม่ดึงข้อมูลจากรีจิสทรี
โดย norisa_dl จ 17 พฤษภาคม 2021 6:13 pm บอร์ด Programming - C/C++ & java & Python
5
20
อ 18 พฤษภาคม 2021 3:15 pm โดย mindphp
สิ่งที่เคยเรียนมา&สิ่งที่เคยทำ
โดย Nutcha.tk136 จ 17 พฤษภาคม 2021 5:19 pm บอร์ด M136 - ณัชชา เทศเกิด
0
3
จ 17 พฤษภาคม 2021 5:19 pm โดย Nutcha.tk136
ประวัติ และJob description ที่เคยทำในแต่ละบริษัท
โดย Nutcha.tk136 จ 17 พฤษภาคม 2021 4:17 pm บอร์ด M136 - ณัชชา เทศเกิด
0
6
จ 17 พฤษภาคม 2021 4:17 pm โดย Nutcha.tk136
สรุป VDO การใช้เว็บบอร์ด
โดย Nutcha.tk136 จ 17 พฤษภาคม 2021 2:59 pm บอร์ด M136 - ณัชชา เทศเกิด
0
3
จ 17 พฤษภาคม 2021 2:59 pm โดย Nutcha.tk136
ไม่ต้องการให้ขอบตารางทำยังไงค่ะ
โดย Anonymous จ 17 พฤษภาคม 2021 12:27 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
1
11
จ 17 พฤษภาคม 2021 1:18 pm โดย mindphp