การสร้างปลายทาง REST
ส่งคืนการตอบกลับแบบ JSON
การสร้างปลายทาง REST เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
REST API คืออะไร
เอพีไอแบบ RESTเปิดให้เข้าถึงทรัพยากรผ่าน HTTP โดยใช้คำกริยามาตรฐาน แทนที่จะส่งหน้า HTML ระบบจะส่งข้อมูล ซึ่งโดยทั่วไปอยู่ในรูป JSON เพื่อให้โปรแกรมอื่นนำไปใช้งาน
from flask import Flask, jsonify
app = Flask(__name__)
# REST endpoints return data, not pages
print('REST APIs speak JSON over HTTP')การส่งคืน JSON
jsonify() แปลงพจนานุกรมหรือรายการของ Python ให้เป็นการตอบกลับแบบ JSON พร้อมชนิดเนื้อหาที่ถูกต้อง
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/api/status')
def status():
return jsonify({'status': 'ok'})
print('jsonify builds a JSON response')การแปลงพจนานุกรมโดยอัตโนมัติ
Flask รุ่นใหม่ยังแปลงพจนานุกรมที่ส่งคืนให้เป็น JSON โดยอัตโนมัติ ดังนั้นหลายกรณีจึงไม่จำเป็นต้องใช้ jsonify()
from flask import Flask
app = Flask(__name__)
@app.route('/api/ping')
def ping():
return {'message': 'pong'}
print('Returning a dict yields JSON')การส่งคืนรายการ
หากต้องการส่งคืนกลุ่มข้อมูล ให้ส่งรายการให้กับ jsonify() แต่ละรายการมักเป็นพจนานุกรมที่แทนทรัพยากรหนึ่งรายการ
from flask import Flask, jsonify
app = Flask(__name__)
books = [{'id': 1, 'title': 'A'}, {'id': 2, 'title': 'B'}]
@app.route('/api/books')
def list_books():
return jsonify(books)
print('Return a list of resources')GET ทรัพยากรหนึ่งรายการ
ใช้ส่วนหนึ่งของ URL แบบไดนามิกเพื่อดึงรายการเดียวด้วยรหัส หากไม่มีรายการนั้น ให้ส่งคืนสถานะ 404
from flask import Flask, jsonify
app = Flask(__name__)
books = {1: {'id': 1, 'title': 'A'}}
@app.route('/api/books/<int:bid>')
def get_book(bid):
book = books.get(bid)
if book is None:
return jsonify({'error': 'not found'}), 404
return jsonify(book)
print('GET /api/books/1')การสร้างด้วย POST
คำขอ POST ใช้สร้างทรัพยากร อ่านเนื้อหา JSON สร้างรายการใหม่ แล้วส่งรายการนั้นกลับมาพร้อมสถานะ 201 Created
from flask import Flask, request, jsonify
app = Flask(__name__)
books = []
@app.route('/api/books', methods=['POST'])
def create_book():
data = request.get_json()
book = {'id': len(books) + 1, 'title': data['title']}
books.append(book)
return jsonify(book), 201
print('POST creates and returns 201')การอัปเดตด้วย PUT
PUT ใช้แทนที่หรืออัปเดตทรัพยากรที่มีอยู่ โดยระบุทรัพยากรด้วยรหัสของทรัพยากรนั้น
from flask import Flask, request, jsonify
app = Flask(__name__)
books = {1: {'id': 1, 'title': 'A'}}
@app.route('/api/books/<int:bid>', methods=['PUT'])
def update_book(bid):
if bid not in books:
return jsonify({'error': 'not found'}), 404
books[bid]['title'] = request.get_json()['title']
return jsonify(books[bid])
print('PUT updates a resource')การลบด้วย DELETE
DELETE ใช้ลบทรัพยากร เมื่อดำเนินการสำเร็จ มักส่งคืนสถานะ 204 No Content
from flask import Flask, jsonify
app = Flask(__name__)
books = {1: {'id': 1, 'title': 'A'}}
@app.route('/api/books/<int:bid>', methods=['DELETE'])
def delete_book(bid):
if bid in books:
del books[bid]
return '', 204
return jsonify({'error': 'not found'}), 404
print('DELETE removes a resource')รหัสสถานะมีความสำคัญ
REST อาศัยรหัสสถานะ HTTP ได้แก่ 200 OK, 201 Created, 204 No Content, 400 Bad Request และ 404 Not Found
# 200 success
# 201 created
# 204 no content
# 400 bad request
# 404 not found
print('Use the right status code')การตรวจสอบเนื้อหา
ตรวจสอบว่าช่องที่จำเป็นมีอยู่ก่อนสร้างทรัพยากร หากเนื้อหาไม่ถูกต้อง ให้ส่งคืน 400 พร้อมข้อความข้อผิดพลาด
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/api/books', methods=['POST'])
def create_book():
data = request.get_json(silent=True) or {}
if 'title' not in data:
return jsonify({'error': 'title required'}), 400
return jsonify(data), 201
print('Validate JSON before using it')การตอบกลับที่สอดคล้องกัน
API ที่ดีจะส่งคืนโครงสร้างข้อมูลที่คาดเดาได้ โดยมักจัดข้อมูลและข้อผิดพลาดให้อยู่ในรูปแบบเดียวกันทุกครั้ง เพื่อให้ไคลเอนต์ใช้งานได้อย่างมั่นใจ
from flask import jsonify
# Success: {'data': {...}}
# Error: {'error': 'message'}
# Keep the shape consistent across endpoints
print('Predictable shapes help clients')ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเรื่อง REST ของคุณ
สรุปทบทวน
คุณได้สร้างปลายทาง REST แบบ JSON
jsonify()หรือพจนานุกรมที่ส่งคืน จะสร้างการตอบกลับแบบ JSON- จับคู่คำกริยา HTTP ดังนี้: GET ใช้อ่านข้อมูล, POST ใช้สร้าง, PUT ใช้อัปเดต และ DELETE ใช้ลบ
- ส่งคืนรหัสสถานะที่สื่อความหมาย เช่น 201, 204, 400 และ 404
- ตรวจสอบเนื้อหาของคำขอและรักษารูปแบบการตอบกลับให้สอดคล้องกัน
คำถามที่พบบ่อย
บทเรียน “การสร้างปลายทาง REST” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การสร้างปลายทาง REST” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การสร้างปลายทาง REST”
ส่งคืนการตอบกลับแบบ JSON คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การสร้างปลายทาง REST” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม
ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เส้นทางและวิว
- เทมเพลตด้วย Jinja2
- ฟอร์มและข้อมูลคำขอ
- การสร้างปลายทาง REST