Monday, March 23, 2026
HomeโซเชียลมีเดียHurl: เรียกใช้และทดสอบคำขอ HTTP API

Hurl: เรียกใช้และทดสอบคำขอ HTTP API

-


ไม่กี่สัปดาห์ที่ผ่านมาฉันเห็นหน้าแรก โพสต์ข่าวแฮ็กเกอร์ บนนักวิ่ง HTTP ที่ใช้ข้อความใหม่ขึ้นอยู่กับ Curl และเขียนใน Rust เรียกว่า เหวี่ยง– น่าสนใจ เรากำลังมองหาวิธีที่ง่ายกว่าในการเรียกใช้และทดสอบคำขอ API กับ API โซเชียลของเรา

ก่อนอื่นหากคุณต้องการทดสอบการโทร API มีตัวเลือกมากมายตั้งแต่เครื่องมือทดสอบออนไลน์บุรุษไปรษณีย์สร้างของคุณเอง ฯลฯ นี่คือการค้นหา Google ในการทดสอบการโทร API

ทดสอบการโทร API ของคุณ

เครื่องมือเหล่านี้น่าจะยอดเยี่ยม แต่ฉันต้องการให้สิ่งต่าง ๆ ง่ายขึ้น:

  • โทรหาจุดสิ้นสุด API ด้วยการสืบค้นหรือพารามิเตอร์โพสต์
  • ตรวจสอบการตอบสนอง 200 ครั้ง
  • ตรวจสอบ JSON กลับมา
  • โทรหาจุดสิ้นสุด API อื่นตาม JSON ที่ส่งคืนในการโทรก่อนหน้า

ระบบควรทำงานผ่านจุดสิ้นสุดทั้งหมดและแจ้งเตือนหากมีบางอย่างผิดปกติ การเรียกใช้อาจถูกต้องก่อนที่จะเปิดตัวหรือหลังจากการเปลี่ยนแปลงรหัส และเนื่องจากฉันเป็นคนรักเทอร์มินัล/CLI ฉันจึงต้องการเรียกใช้การทดสอบที่พรอมต์คำสั่ง – ใช้ งอแอพ MAC Terminal ที่ฉันโปรดปราน

Hurl สำหรับการทดสอบจุดสิ้นสุด API

เมื่อฉันเห็น Hurl ฉันคิดว่าว้าวนี่อาจจะสมบูรณ์แบบ – แม้ว่าจะมีบางอย่างที่จะพูดสำหรับชื่อ

ตามที่ Hurl อธิบายตัวเอง

“” Hurl อนุญาตให้เรียกใช้คำขอ HTTP ที่กำหนดไว้ในรูปแบบข้อความธรรมดา มันสามารถใช้ในการดึงข้อมูลหรือเล่นสถานการณ์ (ลำดับของคำขอ), ยืนยันการตอบกลับไปพร้อมกัน ด้วยรูปแบบที่เป็นข้อความมันมีจุดมุ่งหมายสำหรับทั้ง DevOps และนักพัฒนา ด้วยการใช้งานบรรทัดคำสั่ง/ไบนารีที่ไม่ซ้ำกันอย่างง่ายมันมีจุดประสงค์สำหรับทั้งการรวมกลุ่มและการรวมอย่างต่อเนื่อง”

ลองเหวี่ยงออกไป คุณสามารถ ดูวิธีเรียกใช้ Hurl ด้วยตัวอย่างสคริปต์

การโทร Hurl ขั้นพื้นฐาน

อันดับแรก ติดตั้ง เหวี่ยงระบบปฏิบัติการที่คุณเลือก นี่คือด้วย brew บน Mac:

brew set up hurl

ตอนนี้ลองโทรออก – เราจะโทรหา google.com และตรวจสอบการตอบกลับ 200 ครั้ง

สร้างไฟล์ที่เรียกว่า fundamental.hurl ใน IDE ที่คุณชื่นชอบ – ไม่มีปากกาเน้นข้อความไวยากรณ์ VSCODE แต่ทีม Hurl กล่าวว่าพวกเขากำลังทำงานอยู่

GET https://www.google.com
HTTP/1.1 200

ในไดเรกทอรีที่ fundamental.hurl ไฟล์คือบันทึกเรียกใช้คำสั่ง:

hurl --test fundamental.hurl

คำตอบคือ:

การตอบสนอง

ข้อผิดพลาด! อย่างไรก็ตามนี่เป็นสิ่งที่ดี อย่างที่คุณเห็นปัญหาคือการตอบสนองของ Google.com ด้วย http/2 นอกจากนี้โปรดทราบว่าคุณได้รับสถิติเกี่ยวกับจำนวนไฟล์ที่เรียกใช้ระยะเวลา ฯลฯ เพียงแค่เปลี่ยนสิ่งนี้ในไฟล์ fundamental.hurl และคุณออกไปแข่ง

การตอบสนองความสำเร็จ

การโทร Hurl ขั้นสูง

ตอนนี้สำหรับสิ่งที่สนุกสนานการโพสต์ API เรียกด้วยร่างกายและยืนยันผลลัพธ์ สำหรับตัวอย่าง Hurl ขั้นสูงนี้เราจะโทรไปยังโซเชียลมีเดียของ Ayrshare เพื่อส่งโพสต์ คุณสามารถสร้างไฟล์ บัญชีฟรี ไปยังคีย์ API ของคุณ หลังจากสร้างบัญชีของคุณเชื่อมต่อเครือข่ายโซเชียลอย่างน้อยหนึ่งเครือข่ายเช่น Twitter

สร้างไฟล์ใหม่ที่เรียกว่า publish.hurl และคัดลอกรหัสต่อไปนี้:

# /publish POST -------------
POST https://app.ayrshare.com/api/publish
Content material-Sort: software/json
Authorization: Bearer {{API_KEY}}
{
    "randomPost": true,
    "platforms": (
        "twitter"
    )
}

HTTP/* 200
(Asserts)
header "Content material-Sort" == "software/json; charset=utf-8"
jsonpath "$.standing" == "success"
jsonpath "$.errors" depend == 0

jsonpath "$.postIds(0).standing" == "success"
jsonpath "$.postIds(0).id" exists
jsonpath "$.postIds(0).postUrl" exists
jsonpath "$.postIds(0).platform" == "twitter"

jsonpath "$.id" exists
jsonpath "$.refId" exists
jsonpath "$.publish" exists

(Captures)
id: jsonpath "$('id')"
tw_id: jsonpath "$.postIds(0).id"
# -----------------------

มีหลายสิ่งเกิดขึ้น ก่อนอื่น {{API_KEY}} เป็นชุดตัวแปรในไฟล์ Env เราเก็บสิ่งนี้ไว้ในไฟล์อื่นเพื่อให้สามารถใช้กับการเหวี่ยงที่แตกต่างกัน

ตั้งค่าคีย์ API ในไฟล์ที่เรียกว่า vars.env

API_KEY=GHLOM-QW6MRC7-KX944W1-PWKJFT

สองบรรทัดถัดไป (Content material-Sort และ Authorization) ตั้งส่วนหัวตามด้วยร่าง JSON ของโพสต์ ดู โซเชียลมีเดีย API /จุดสิ้นสุดโพสต์ สำหรับรายละเอียดเกี่ยวกับโพสต์ร่างกาย นี่คือข้อมูลทั้งหมดที่เกี่ยวข้องกับการโทร

บรรทัดด้วย HTTP/* 200 เริ่มต้นการทดสอบ (* แทน 1.1 หรือ 2 ดังนั้นจะยอมรับรุ่น HTTP ใด ๆ )

(ยืนยัน)

ใน (Asserts) ส่วนของไฟล์เราทดสอบความถูกต้องของการตอบกลับส่วนหัวและ JSON header "Content material-Sort" ตรวจสอบว่าประเภทเนื้อหาถูกต้องหรือไม่ สำหรับ JSON เราต้องแยกกุญแจด้วย jsonpath แบบสอบถามประเภทภาคแสดงและค่าภาคแสดง

รูปแบบรหัส Hurl

ตัวอย่างเช่น, jsonpath "$.standing" == "success" รับคีย์สถานะและการตรวจสอบคือค่าเท่ากับ“ ความสำเร็จ” หากไม่เป็นเช่นนั้นจะมีข้อผิดพลาดเกิดขึ้น

มีการประชุมหลายประเภทเช่น exists และ depend

(จับ)

ที่ (Captures) ส่วนจับข้อมูลเป็นตัวแปร รูปแบบคือ:

รูปแบบการจับภาพ

ในตัวอย่างของเรา

id: jsonpath "$('id')"
tw_id: jsonpath "$.postIds(0).id"

เราจับรหัสโพสต์ที่ส่งคืนและรหัสทวีตที่อยู่ในวัตถุในอาร์เรย์ เราสามารถใช้ตัวแปรนี้ได้ในภายหลังหากเราต้องการเชนคำขอด้วยรูปแบบ {{variable title}}

# /analytics/publish -------
POST https://app.ayrshare.com/api/analytics/publish
Content material-Sort: software/json
Authorization: Bearer {{API_KEY}}
{
    "id": "{{id}}"
}

วิ่งเหยาะๆ

ในที่สุดเราต้องเรียกใช้ไฟล์ HURL ที่พรอมต์คำสั่งโดยใช้ไฟล์ --very-verbose ธงเพื่อให้เราสามารถเห็นสิ่งดีๆทั้งหมดเกิดขึ้น:

hurl --test --very-verbose --variables-file vars.env publish.hurl

และผลลัพธ์:

ตัวอย่างโพสต์โพสต์

Joyful Hurl

จนถึงตอนนี้ดีมากกับการขว้าง ฉันพบว่ามันใช้งานง่ายและมีคุณสมบัติมากมาย นอกจากนี้พวกเขาดูเหมือนจะอยู่ในจังหวะปกติของการเผยแพร่ – เป็นสัญญาณที่ดีเสมอ

เราได้เขียนกรณีทดสอบเพิ่มเติมในช่วงหลายสัปดาห์ที่ผ่านมาและในขณะที่ทีมพัฒนาของเราใช้ Hurl มากขึ้นเราจะตัดสินใจว่ามันเป็นส่วนถาวรของชุดทดสอบของเราหรือไม่

หากคุณต้องการดูตัวอย่าง Hurl ตัวอย่างเพิ่มเติมที่มีการผูกมัดลองดู ไฟล์ Hurl ของ Ayrshare

-Geoff Bourne ผู้ร่วมก่อตั้ง Ayrshare

Related articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Stay Connected

0FansLike
0FollowersFollow
0FollowersFollow
0SubscribersSubscribe
spot_img

Latest posts