s s
.uef^" :8 :8 ..
:d88E .88 .88 @L
`888E :888ooo :888ooo 9888i .dL
888E .z8k -*8888888 -*8888888 `Y888k:*888.
888E~?888L 8888 8888 888E 888I
888E 888E 8888 8888 888E 888I
888E 888E 8888 8888 888E 888I
888E 888E .8888Lu= .8888Lu= 888E 888I
888E 888E ^%888* ^%888* x888N><888'
m888N= 888> 'Y" 'Y" "88" 888
`Y" 888 __ .__ 88F
J88" _/ |_| |__ ____ 98"
@% __ | _/ __ ./"
:" | | | Y ___/ ~`
|__| |___| /___ >
__________/_____/____________________
/ | __ ___/__ ___/______
/ ~ | | | | | ___/
Y /| | | | | |
___|_ / |____| |____| |____|
______/___________________.___.
__ ___/__ ___/__ | |
| | | | / | |
| | | | ____ |
|____| |____| / ______|
/
HTTY هو تطبيق وحدة التحكم للتفاعل مع خوادم الويب. إنها طريقة ممتعة لاستكشاف واجهات برمجة تطبيقات الويب وتعلم خصوصيات HTTP.
تعرف على ما تم تغييره مؤخرًا من خلال قراءة تاريخ المشروع.
لا يمكن أن يكون أسهل بكثير.
$ gem install htty
ستحتاج إلى Ruby و Rubygems. من المعروف أنه يعمل بشكل جيد تحت OS X ضد Ruby V1.8.7 و V1.9.2 و V1.9.3 و V2.0 و V2.1 و V2.2.
الأشياء التي يمكنك القيام بها مع HTTY هي:
فيما يلي بعض نصوص جلسة HTTY المشروحة لتبدأ (لقطات الشاشة الطرفية الموضحة هنا متوفرة أيضًا في النموذج النصي).
يوضح هذا المثال البسيط كيفية استكشاف خدمة ويب للقراءة فقط مع HTTY .
يمكنك توجيه HTTY إلى عنوان URL ويب كامل أو جزئي. إذا لم تقم بتوفير عنوان URL ، سيتم استخدام http://0.0.0.0/ (المنفذ 80). يمكنك تغيير مخطط البروتوكول ، userinfo ، المضيف ، المنفذ ، المسار ، سلسلة الاستعلام ، وشظية كما تشاء.
تعرض موجه HTTY Shell عنوان الطلب الحالي.
أمر get هو واحد من سبع طرق طلب HTTP المدعومة. يتم عرض ملخص موجز للاستجابة عند إصدار طلب.
يمكنك متابعة عمليات إعادة التوجيه باستخدام أمر follow . لا يتم تقديم طلب حتى تكتب أمر طلب مثل get أو post .
يمكنك تعديل شرائح العنوان حسب الرغبة. نحن هنا نتنقل في التسلسل الهرمي للمسار في الموقع ، والذي يمكنك القيام به مع Pathspecs النسبية والمطلقة.
هنا نضيف معلمات سلسلة الاستعلام. لاحظ أن الأحرف التي تتطلب ترميز عنوان URL تلقائيًا ترميز URL (ما لم تكن جزءًا من تعبير مشفر عن عنوان URL).
تكشف أوامر headers-response body-response عن تفاصيل الاستجابة.
كان هناك بعض Cruft في استجابة خدمة الويب (خط أفقي ، مرجع مرور ، أرقام الآية ، ختم حقوق الطبع والنشر ، وفواصل الخط). نقوم بإزالةه باستخدام خيارات API التي توفرها خدمة الويب التي نتحدث إليها.
نقوم بمناورة Julia Child ونستخدم أمر address لتغيير عنوان URL بأكمله ، بدلاً من إضافة معلمات سلسلة الاستعلام الفردية واحدًا تلو الآخر.
اخرج من جلستك في أي وقت عن طريق كتابة quit أو ضرب Ctrl-D.
يوضح المثال التالي ميزات HTTY HTTP Secure Sureed وميزات ملفات تعريف الارتباط ، بالإضافة إلى كيفية مراجعة الطلبات السابقة وإعادة النظر فيها.
ينطوي مخطط HTTPS: // والمنفذ 443 على بعضهما البعض ، تمامًا مثل مخطط HTTP: // ومنفذ 80 يعني بعضهما البعض. إذا قمت بحذف المخطط أو المنفذ ، فسيؤدي ذلك إلى القيمة المناسبة.
لاحظ أنه عندما يتم تقديم ملفات تعريف الارتباط في استجابة ، تظهر علامة نجمية جريئة (يبدو وكأنها ملف تعريف ارتباط) في ملخص الاستجابة. يظهر رمز ملف تعريف الارتباط نفسه بجوار رأس Set-cookie عند عرض رؤوس الاستجابة.
تقوم cookies-use بنسخ ملفات تعريف الارتباط من الاستجابة في الطلب التالي. يظهر رمز ملف تعريف الارتباط بجوار رأس ملف تعريف الارتباط عند عرض الرؤوس.
يتوفر تاريخ مختصر من خلال أمر history . تتضمن المعلومات حول الطلبات في السجل طريقة الطلب وعنوان URL وعدد الرؤوس (ورمز ملفات تعريف الارتباط ، إذا تم إرسال ملفات تعريف الارتباط) ، وحجم الجسم. تتضمن المعلومات حول الاستجابات في السجل رمز الاستجابة ، وعدد الرؤوس (ورمز ملفات تعريف الارتباط ، إذا تم استلام ملفات تعريف الارتباط) ، وحجم الجسم.
لاحظ أن السجل يحتوي على طلب HTTP المرقم فقط وأزواج الاستجابة ، وليس سجلًا لجميع الأوامر التي تدخلها.
يقوم أمر reuse بعمل نسخة من رؤوس وجسم طلب سابق لك للبناء عليه.
الآن سننظر في دعم المصادقة الأساسي لـ HTTY HTTP ونتعلم كيفية عرض نصوص غير متوقعة لجلسات HTTY .
افترض أن لدينا تطبيق Sinatra التالي الاستماع إلى منفذ Sinatra الافتراضي ، 4567.
require 'sinatra'
get '/all-good' do
[ 200 , [ [ 'Set-Cookie' , 'foo=bar; baz' ] ] , 'Hello World!' ]
end
put '/huh' do
[ 404 , 'What?' ]
end
delete '/hurl' do
[ 500 , 'Barf!' ]
end
post '/submit-novel' do
redirect '/all-good'
endيتوقع هذا التطبيق الحصول على الطلبات والاستجابة لها بطرق مختلفة.
عند تغيير جزء userInfo من العنوان ، أو العنوان بأكمله ، يتم إنشاء رأس المصادقة الأساسي HTTP المناسب لك تلقائيًا. لاحظ أن الأحرف التي تتطلب ترميز عنوان URL تلقائيًا ترميز URL (ما لم تكن جزءًا من تعبير مشفر عن عنوان URL).
عندما يتم توفير userinfo في طلب ، يظهر رمز تجاري جريء ( @ ) بجوار رأس التفويض الناتج عند عرض رؤوس الطلب (انظر أدناه).
اكتب مجموعة body-set لدخول بيانات الجسم ، وإنهائها عن طريق إدخال سطرين فارغين متتاليين ، أو عن طريق ضرب Ctrl-D. سيتم إرسال الجسم فقط للنشر وتقديم الطلبات. يتم إنشاء رأس طول المحتوى المناسب لك تلقائيًا (انظر أدناه).
يتم تقديم رموز الاستجابة المختلفة بألوان تشير إلى معناها:
كما هو الحال مع التاريخ المختصر الذي تم توضيحه سابقًا ، يعرض تاريخ المطوّل قائمة مرقمة من الطلبات والاستجابات التي أثاروها. يتم عرض جميع المعلومات المتبادلة بين العميل والخادم.
يمكنك معرفة كيفية استخدام أوامر HTTY من داخل HTTY .
يأخذ أمر help وسيطة اختيارية للاسم المختصر أو الاسم الكامل لأمر.
الإبلاغ عن العيوب وطلبات الميزات حول قضايا جيثب.
تصحيحاتك موضع ترحيب ، وسوف تتلقى إسناد هنا للأشياء الجيدة. مفترق مستودع HTTY الرسمي وإرسال طلب سحب.
بعد استنساخ المستودع ، bin/setup لتثبيت التبعيات. ثم rake لتشغيل الاختبارات. يمكنك أيضًا bin/console للحصول على مطالبة تفاعلية تتيح لك التجربة.
لتثبيت هذه الأحجار الكريمة على جهازك المحلي ، bundle exec rake install . لإصدار إصدار جديد ، قم بتحديث رقم الإصدار في LIB/HTTY/Version.rb ، ثم bundle exec rake release ، والذي سيقوم بإنشاء علامة GIT للإصدار ، ودفع ارتباطات وعلامات ، ودفع ملف .gem إلى rubygems.org.
ابق على اتصال مع مشروع HTTY باتباع GET_HTTY على Twitter.
يمكنك أيضًا الحصول على مساعدة في قناة #HTTY على Freenode.
المؤلف ، نيلز جونسون ، يدين بديون إلهام لمشروع HTTP-Console .
بفضل المساهمين (بالترتيب الأبجدي):
صدر تحت رخصة معهد ماساتشوستس للتكنولوجيا.