مقالات

Hurl: درخواست های API HTTP را کامل و آزمایش کنید


چند هفته پیش ، من یک پست خبری را در صفحه اول متن جدید بر اساس دونده HTTP بر اساس Curl و نوشته شده در Rust به نام Hurl دیدم. جذاب ما به دنبال یک روش ساده برای تحقق و آزمایش درخواست های API در برابر API اجتماعی خود بودیم.

اول ، اگر به دنبال آزمایش تماس های API هستید ، گزینه های مختلفی از ابزارهای تست آنلاین ، پستچی ، ساخت خود و غیره وجود دارد. در اینجا در هنگام آزمایش تماس های API یک جستجوی Google وجود دارد.

این ابزارها احتمالاً عالی هستند ، اما من می خواهم چیزها را ساده کنم:

  • با پارامترهای درخواست یا ارسال با نقاط پایانی API تماس بگیرید.
  • پاسخ 200 را بررسی کنید.
  • اعتبارسنجی JSON بازگشت.
  • با یک نقطه پایانی API دیگر بر اساس JSON به تماس قبلی تماس بگیرید.

سیستم باید تمام نقاط پایانی را پشت سر بگذارد و در صورت اشتباه بودن هشدار دهد. عملکرد می تواند درست قبل از راه اندازی یا بعد از تغییر کد باشد. و از آنجا که من طرفدار ترمینال/CLI هستم ، ترجیح می دهم تست را در خط فرمان راه اندازی کنم – با استفاده از WARP ، برنامه ترمینال MAC مورد علاقه من.

برای آزمایش نقطه پایانی API

وقتی HERL را دیدم ، فکر کردم ، وای ، می تواند عالی باشد – حتی اگر چیزی برای گفتن در مورد نام وجود داشته باشد.

همانطور که هورل خودش را توصیف می کند ،

“” Hurl اجازه می دهد تا درخواست های HTTP ، که در قالب متن ساده تعریف شده است. می توان از آن برای به دست آوردن داده یا بازی سناریوی (دنباله درخواست ها) استفاده کرد و پاسخ ها را در طول مسیر ادعا کرد. با فرمت متن آن ، هم در DevOps و هم توسعه دهندگان انجام می شود. با استفاده از خط فرمان/باینری باینری منحصر به فرد ساده ، هم در توسعه محلی و هم برای ادغام مداوم انجام می شود. “

بیایید سعی کنیم بیرون برویم. همچنین می توانید با نمونه هایی از اسکریپت ها شروع کنید.

تماس اصلی Hurl

ابتدا Hurl را روی محور مورد نظر خود نصب کنید. در اینجا brew در Mac:

brew install hurl

حال بیایید سعی کنیم تماس بگیریم – ما فقط با Google.com تماس خواهیم گرفت و بررسی خواهیم کرد که 200 پاسخ بازگردانده شده است.

فایلی به نام ایجاد کنید پایه. در IDE مورد علاقه خود – هیچ نحوی VSCODE وجود ندارد ، اما تیم Hurl گفت که آنها روی آن کار می کنند.

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

در دایرکتوری کجا پایه. پرونده ذخیره می شود و دستور را اجرا می کند:

hurl --test basic.hurl

پاسخ این است:

جواب هول

یک اشتباه! با این حال ، این خوب است. همانطور که مشاهده می کنید ، مشکل پاسخ Google.com با HTTP/2 است. همچنین توجه داشته باشید که چگونه آماری را در مورد تعداد پرونده ها به پایان رسانده اید ، مدت زمان و غیره. فقط این را به پرونده basic.hurl تغییر دهید و به مسابقات رفتید.

پاسخ به موفقیت هورل

فراخوان گسترده

اکنون برای کارهای سرگرم کننده ، برقراری تماس با API و تماس با آنها و نتایج حمایت از آن. برای این نمونه پیچیده از Hurl ، ما تماس های رسانه های اجتماعی Ayrshare API را برای ارسال یک نشریه می نامیم. می توانید یک حساب رایگان برای کلید API خود ایجاد کنید. پس از ایجاد حساب خود ، حداقل یک شبکه اجتماعی مانند توییتر را وصل کنید.

یک فایل جدید به نام ایجاد کنید post.hurl و کد زیر را کپی کنید:

# /post POST -------------
POST https://app.ayrshare.com/api/post
Content-Type: application/json
Authorization: Bearer {{API_KEY}}
{
    "randomPost": true,
    "platforms": [
        "twitter"
    ]
}

HTTP/* 200
[Asserts]
header "Content-Type" == "application/json; charset=utf-8"
jsonpath "$.status" == "success"
jsonpath "$.errors" count == 0

jsonpath "$.postIds[0].status" == "success"
jsonpath "$.postIds[0].id" exists
jsonpath "$.postIds[0].postUrl" exists
jsonpath "$.postIds[0].platform" == "twitter"

jsonpath "$.id" exists
jsonpath "$.refId" exists
jsonpath "$.post" exists

[Captures]
id: jsonpath "$['id']"
tw_id: jsonpath "$.postIds[0].id"
# -----------------------

اتفاقات مختلفی رخ می دهد. اول ، {{API_KEY}} متغیر تنظیم شده در پرونده ENV است. ما این را در یک پرونده متفاوت نگه می داریم تا بتوان از آن با پرتاب های مختلف استفاده کرد.

کلید API را در پرونده نامیده شده برای شما تنظیم کنید vars.env:

API_KEY=GHLOM-QW6MRC7-KX944W1-PWKJFT

دو خط بعدی (Content-Type وت Authorization) هدر را به دنبال آن جسد JSON را روی پست قرار دهید. برای جزئیات بیشتر در مورد بدن انتشار ، به نقطه انتهایی API /پست رسانه های اجتماعی مراجعه کنید. اینها همه داده های مربوط به تماس است.

خط با HTTP/* 200 آزمایش شروع می شود (* به جای 1.1 یا 2 ، بنابراین هر نسخه HTTP پذیرفته می شود).

[Asserts]

در [Asserts] بخشی از پرونده در حال آزمایش اعتبار عنوان و پاسخ JSON است. header "Content-Type" بررسی می کند که نوع محتوا صحیح است. برای JSON ، ما باید کلید را با آن استخراج کنیم jsonpath درخواست ، نوع محمول و مقدار یک محمول.

فرمت کد HURL

به عنوان مثال ، jsonpath "$.status" == "success" کلید وضعیت را دریافت کنید و بررسی کنید که مقدار برابر با “موفقیت” است. اگر نه ، اشتباه پرتاب می شود.

انواع مختلفی از پیش بینی ها وجود دارد ، مانند exists وت countحرف

[Captures]

او [Captures] این بخش داده ها را در متغیرها ضبط می کند. قالب:

فرمت گرفتن هورل

در مثال ما ،

id: jsonpath "$['id']"
tw_id: jsonpath "$.postIds[0].id"

ما شناسه برگشتی پست و شناسه توییت را که در یک شیء در یک آرایه قرار دارد ، ضبط می کنیم. اگر می خواهیم درخواست های درخواست را زنجیر کنیم ، بعداً می توانیم از این متغیرها استفاده کنیم {{variable name}}:

# /analytics/post -------
POST https://app.ayrshare.com/api/analytics/post
Content-Type: application/json
Authorization: Bearer {{API_KEY}}
{
    "id": "{{id}}"
}

کامل

سرانجام ما باید پرونده Hurl را با استفاده از خط فرمان راه اندازی کنیم --very-verbose پرچم بنابراین ما می توانیم همه اتفاقات خوبی را که اتفاق می افتد ببینیم:

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

و نتایج:

نمونه ای از انتشار هول

هرل مبارک

خیلی خوب با هورل. من استفاده و عملکرد غنی را آسان کردم. آنها همچنین به نظر می رسد که در یک کادر معمولی نسخه ها قرار دارند – همیشه نشانه خوبی است.

در طی چند هفته گذشته ، ما موارد بیشتری از تست ها را نوشتیم و از آنجا که تیم توسعه ما بیشتر استفاده می کند ، تصمیم خواهیم گرفت که آیا این یک بخش دائمی از بسته آزمایش ما است.

اگر می خواهید نمونه های بیشتری را با زنجیره مشاهده کنید ، به پرونده های Hurl Ayrshare مراجعه کنید.

-جف بورن ، بنیانگذار Ayrshare


Source link

نوشته های مشابه

دیدگاهتان را بنویسید

دکمه بازگشت به بالا