จากบทความที่แล้วได้มีการแนะนำการใช้ GET Method ใน FastAPI ซึ่งเป็นเป็นการรับค่าแบบ query string โดยเมื่อมีการส่งหรือรับค่ามันจะไปแสดงตรงช่อง url แต่จะแตกต่างจาก POST Method  ที่จะเป็นการรับ-ส่งค่าแบบ request body ซึ่งมันจะไปแสดงที่ Inspect (F12) แท็บ Network 

เริ่มแรกให้เราทำการ import modules เข้ามาตามรูปด้านล่าง

from fastapi import FastAPI

import uvicorn

from pydantic import BaseModel     #<----- ทำการ import BaseModel เข้ามา


app = FastAPI()
ทำการ import module pydantic เข้ามาใช้
ทำการ import pydantic เข้ามา

 

โดย pydantic จะติดตั้งมาให้พร้อมกับตอนติดตั้ง pip install fastapi สามารถ import เข้ามาใช้งานได้เลยให้เราทำการสร้าง class ขึ้นมาตามรูปด้านล่าง

app = FastAPI()


Class User(BaseModel):    #นำ class BaseModel มาใส่ไว้ในวงเล็บ
   firstname : str
   lastname  : str
   age       : int
ทำการสร้าง class BaseModel สำหรับการรับข้อมูลแบบ body
สร้าง Class รับข้อมูลแบบ Body

 

จากนั้นเราจะมาเรียกใช้งานมันกัน โดยตรงคำว่า request: User เราสามารถตั้งเป็นคำไหนก็ได้ ขอให้มันสอดคล้องจะได้ไม่งงกัน เช่น user: User

@app.post('/userinfo')
async def read_user(request: User):
   data : {
      'firstname': request.firstname,
      'lastname' : request.lastname,
      'age'      : request.age
   }
   return data    #จริง ๆ สามารถใช้ return request <--แบบนี้ได้เลย กรณีแสดงค่าทั้งหมด
ทำการสร้าง API ขึ้นมาแบบ post และสร้างฟังก์ชันข้างในมี argument class จากฺ BaseModel
ทำการเรียกใช้ Class User

 

โดยตรงคำว่า request: User เราสามารถตั้งเป็นคำไหนก็ได้ ขอให้มันสอดคล้องจะได้ไม่งงกัน เช่น user: User

โดยเมื่อเราเขียนโค้ดตามใยรูปด้านบนเสร็จก็ให้ Ctrl + s จากนั้นเปิด terminal แล้วพิมพ์ 

uvicorn main:app --reload

#จะได้ลิงก์มาใน Terminal เป็น localhost ของเรา

จากนั้นไปที่ http://127.0.0.1:8000/docs

คัดลอก URL แล้วไปเปิดที่ browser
ไปยังที่อยู่ URL

 

จากนั้นเรามาทดสอบกัน

กรอกข้อมูลที่ต้องการส่งในฟอร์ม body
กรอกข้อมูลลงในฟอร์ม

 

จะสังเกตว่ามันเป็นการ request body ซึ่งมันจะต้องส่งมาในรูปแบบของ Json เมื่อกรอกเสร็จกด Execute

เมื่อกรอกเสร็จให้ทำการกด execute
กด Execute เพื่อดูผลลัพธ์

 

 

เราสามารถนำ Request URL ไปทดสอบใน Postman ได้เช่นกัน โดยถ้าเป็น post ก็ให้เลือกส่งแบบ Json

ลองใช้ postman ในการยิง request มารที่ API
ทดสอบยิง request ด้วย postman

 

 

ก็เป็นตัวอย่างสำหรับการรับส่งข้อมูลแบบ request body ซึ่งใน post method จะถูกนำไปใช้ในระบบ login ,insert ข้อมูลลง database เป็นต้น

อ้างอิง

REST API ใน Python พร้อม FastAPI และ Pydantic: คุณสมบัติอ่านอย่างเดียวในโมเดล, [ออนไลน์]

แหล่งที่มา: https://qathai.com/REST-API-ใน-Python-พร้อม-FastAPI-และ-pydantic:-คุณสมบัติอ่านอย่างเดียวในโมเดล

Python FastAPI Tutorial: Build a Fast API, [ออนไลน์], [CodingNomads]

แหล่งที่มา: https://codingnomads.co/blog/python-fastapi-tutorial

Getting Started with FastAPI - Create APIs Quickly using Python, [ออนไลน์]

แหล่งที่มา: https://dev.to/supanthapaul/getting-started-with-fastapi-create-apis-quickly-using-python-2a9f

หัวเรื่อง
Python Framework FastAPI
หมวดหมู่
สื่อการสอน โปแกรมเมอร์, สื่อการสอน โปแกรมเมอร์
ฮิต
9396
ผู้สร้างเอกสาร
anawatj
วันที่สร้างเอกสาร
2023-09-30 22:36:29
รายละเอียด

สื่อการสอน Python Framework FastAPI  

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


รายละเอียดของไฟล์ดาวน์โหลด

  • Code การสร้าง Table ด้วย psycopg2 ใน FastAPI เขียน API เชื่อมฐานข้อมูล
  • Code การใช้ Delete Method บน FastAPI
  • Code การใช้งาน POST - Method สร้าง API
  • Code การใช้ PUT - Method
  • Code การใช้ router ใน FastAPI
  • Code การใช้ Typing ใน FastAPI

 

typing-fastapi.zip

ประเภทไฟล์ zip

ขนาดไฟล์ 307 bytes

ผู้อัพโหลดไฟล์ anawatj

วันที่อัพโหลด 2023-09-30 15:32:04


router-in-fastapi.zip

ประเภทไฟล์ zip

ขนาดไฟล์ 1.08 KB

ผู้อัพโหลดไฟล์ anawatj

วันที่อัพโหลด 2023-09-30 15:32:04


put-method.zip

ประเภทไฟล์ zip

ขนาดไฟล์ 424 bytes

ผู้อัพโหลดไฟล์ anawatj

วันที่อัพโหลด 2023-09-30 15:32:03


post-method.zip

ประเภทไฟล์ zip

ขนาดไฟล์ 311 bytes

ผู้อัพโหลดไฟล์ anawatj

วันที่อัพโหลด 2023-09-30 15:32:03


delete-method.zip

ประเภทไฟล์ zip

ขนาดไฟล์ 392 bytes

ผู้อัพโหลดไฟล์ anawatj

วันที่อัพโหลด 2023-09-30 15:32:03


create-table-with-psycopg2.zip

ประเภทไฟล์ zip

ขนาดไฟล์ 1.12 KB

ผู้อัพโหลดไฟล์ anawatj

วันที่อัพโหลด 2023-09-30 15:32:03


กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
เเนะสำนักงานบัญชี สำหรับเจ้าของธุรกิจที่ต้องการจ้างบัญชี
โดย duangmain ศ 21 มี.ค. 2025 11:03 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
2
4
ส 22 มี.ค. 2025 12:11 am โดย duangmain View Topic เเนะสำนักงานบัญชี สำหรับเจ้าของธุรกิจที่ต้องการจ้างบัญชี
สอบถามค่ะ ทำจะทำ pdf/a3 ส่วนนี้ผิดอะไร ตั้งแต่สร้างไฟล์ จนถึงวิธีรันไฟล์บน command
โดย MBMoo ศ 21 มี.ค. 2025 12:06 pm บอร์ด Programming - C/C++ & java & Python
7
79
ศ 21 มี.ค. 2025 5:18 pm โดย mindphp View Topic สอบถามค่ะ ทำจะทำ pdf/a3 ส่วนนี้ผิดอะไร ตั้งแต่สร้างไฟล์ จนถึงวิธีรันไฟล์บน command
เริ่มต้นทำธุรกิจ SME อย่างไรให้รอดและยั่งยืน?
โดย admeadme ศ 21 มี.ค. 2025 1:31 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
9
ศ 21 มี.ค. 2025 1:31 pm โดย admeadme View Topic เริ่มต้นทำธุรกิจ SME อย่างไรให้รอดและยั่งยืน?
การประยุกต์ใช้ AI ในธุรกิจ โอกาสหรือความท้าทาย
โดย admeadme ศ 21 มี.ค. 2025 10:00 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
30
ศ 21 มี.ค. 2025 10:00 am โดย admeadme View Topic การประยุกต์ใช้ AI ในธุรกิจ โอกาสหรือความท้าทาย
VDO - คู่มือ Vendor Deposit & Payment ต่างสกุลเงิน พร้อมบันทึกส่วนต่าง FX
โดย noncup302 พฤ 20 มี.ค. 2025 4:37 pm บอร์ด MDERPv2 - Feature - Manual & เทคนิคการใช้งาน
1
5
ศ 21 มี.ค. 2025 12:31 pm โดย noncup302 View Topic VDO - คู่มือ Vendor Deposit & Payment ต่างสกุลเงิน พร้อมบันทึกส่วนต่าง FX
R - mdsoft_email_to_recruitment_v2 - เพิ่มข้อมูลเมื่อมี Email สมัครงานเข้ามายัง Email ที่ผูกกับระบบ
โดย MBMoo พ 19 มี.ค. 2025 4:10 pm บอร์ด MDERPv2 - Developer
2
6
พฤ 20 มี.ค. 2025 2:54 pm โดย MBMoo View Topic R - mdsoft_email_to_recruitment_v2 - เพิ่มข้อมูลเมื่อมี Email สมัครงานเข้ามายัง Email ที่ผูกกับระบบ
Deploy Node.js 12 บน Ubuntu 22 บน Google Cloud พร้อมการตั้งค่าความปลอดภัย
โดย mindphp พ 19 มี.ค. 2025 2:35 pm บอร์ด Linux - Web Server
2
112
พ 19 มี.ค. 2025 2:46 pm โดย mindphp View Topic Deploy Node.js 12 บน Ubuntu 22 บน Google Cloud พร้อมการตั้งค่าความปลอดภัย
17 ไอเดียการทำเงินด้วย AI พร้อมคำแนะนำที่จะช่วยให้คุณเริ่มต้นธุรกิจบนโลกดิจิทัลได้อย่างมีประสิทธิภาพ
โดย Anonymous พ 19 มี.ค. 2025 1:11 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
88
พ 19 มี.ค. 2025 1:11 pm โดย บุคคลทั่วไป View Topic 17 ไอเดียการทำเงินด้วย AI พร้อมคำแนะนำที่จะช่วยให้คุณเริ่มต้นธุรกิจบนโลกดิจิทัลได้อย่างมีประสิทธิภาพ