Flask - วิธี HTTP
โปรโตคอล HTTP เป็นรากฐานของการสื่อสารข้อมูลในเว็บทั่วโลก มีการกำหนดวิธีการดึงข้อมูลจาก URL ที่ระบุไว้ในโปรโตคอลนี้
ตารางต่อไปนี้สรุปวิธีการ http ต่างๆ -
ซีเนียร์ | วิธีการและคำอธิบาย |
---|---|
1 | GET ส่งข้อมูลในรูปแบบที่ไม่ได้เข้ารหัสไปยังเซิร์ฟเวอร์ วิธีที่ใช้บ่อยที่สุด |
2 | HEAD เหมือนกับ GET แต่ไม่มีเนื้อหาตอบสนอง |
3 | POST ใช้เพื่อส่งข้อมูลรูปแบบ HTML ไปยังเซิร์ฟเวอร์ ข้อมูลที่ได้รับโดยวิธี POST จะไม่ถูกแคชโดยเซิร์ฟเวอร์ |
4 | PUT แทนที่การแสดงปัจจุบันทั้งหมดของทรัพยากรเป้าหมายด้วยเนื้อหาที่อัปโหลด |
5 | DELETE ลบการแสดงปัจจุบันทั้งหมดของทรัพยากรเป้าหมายที่กำหนดโดย URL |
ตามค่าเริ่มต้นเส้นทางของขวดจะตอบสนองต่อไฟล์ GETคำขอ อย่างไรก็ตามการตั้งค่านี้สามารถเปลี่ยนแปลงได้โดยระบุวิธีการโต้แย้งroute() มัณฑนากร.
เพื่อแสดงให้เห็นถึงการใช้งาน POST วิธีการในการกำหนดเส้นทาง URL ขั้นแรกให้เราสร้างแบบฟอร์ม HTML และใช้ไฟล์ POST วิธีการส่งข้อมูลแบบฟอร์มไปยัง URL
บันทึกสคริปต์ต่อไปนี้เป็น login.html
<html>
<body>
<form action = "http://localhost:5000/login" method = "post">
<p>Enter Name:</p>
<p><input type = "text" name = "nm" /></p>
<p><input type = "submit" value = "submit" /></p>
</form>
</body>
</html>
ตอนนี้ป้อนสคริปต์ต่อไปนี้ใน Python shell
from flask import Flask, redirect, url_for, request
app = Flask(__name__)
@app.route('/success/<name>')
def success(name):
return 'welcome %s' % name
@app.route('/login',methods = ['POST', 'GET'])
def login():
if request.method == 'POST':
user = request.form['nm']
return redirect(url_for('success',name = user))
else:
user = request.args.get('nm')
return redirect(url_for('success',name = user))
if __name__ == '__main__':
app.run(debug = True)
หลังจากเซิร์ฟเวอร์การพัฒนาเริ่มทำงานให้เปิด login.html ในเบราว์เซอร์ป้อนชื่อในช่องข้อความแล้วคลิก Submit.
ข้อมูลแบบฟอร์มถูกโพสต์ไปยัง URL ในส่วนการดำเนินการของแท็กฟอร์ม
http://localhost/login ถูกจับคู่กับไฟล์ login()ฟังก์ชัน เนื่องจากเซิร์ฟเวอร์ได้รับข้อมูลโดยPOST วิธีการค่าของพารามิเตอร์ 'nm' ที่ได้รับจากข้อมูลแบบฟอร์มได้มาจาก -
user = request.form['nm']
จะถูกส่งผ่านไปยัง ‘/success’URL เป็นส่วนตัวแปร เบราว์เซอร์จะแสดงไฟล์welcome ข้อความในหน้าต่าง
เปลี่ยนพารามิเตอร์ method เป็น ‘GET’ ใน login.htmlและเปิดอีกครั้งในเบราว์เซอร์ ข้อมูลที่ได้รับบนเซิร์ฟเวอร์มาจากไฟล์GETวิธี. ตอนนี้ค่าของพารามิเตอร์ 'nm' ได้รับโดย -
User = request.args.get(‘nm’)
ที่นี่ argsคืออ็อบเจ็กต์พจนานุกรมที่มีรายการคู่ของพารามิเตอร์ฟอร์มและค่าที่สอดคล้องกัน ค่าที่สอดคล้องกับพารามิเตอร์ "nm" จะถูกส่งต่อไปยัง URL "/ success" เหมือนเดิม