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 เป็นแอปพลิเคชันคอนโซลสำหรับการโต้ตอบกับเว็บเซิร์ฟเวอร์ มันเป็นวิธีที่สนุกในการสำรวจเว็บ APIs และเรียนรู้เกี่ยวกับ HTTP
ดูสิ่งที่เปลี่ยนแปลงไปเมื่อเร็ว ๆ นี้โดยการอ่านประวัติโครงการ
มันไม่ได้ง่ายกว่านี้อีกแล้ว
$ gem install htty
คุณจะต้องมีทับทิมและทับทิม เป็นที่ทราบกันดีว่าทำงานได้ดีภายใต้ 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 และใช้คำสั่ง address เพื่อเปลี่ยน URL ทั้งหมดแทนที่จะเพิ่มพารามิเตอร์การสืบค้นแต่ละครั้งทีละหนึ่ง
ออกจากเซสชันของคุณได้ตลอดเวลาโดยพิมพ์ quit หรือกดปุ่ม CTRL-D
ตัวอย่างต่อไปแสดงให้เห็นถึงคุณสมบัติการสนับสนุนและคุกกี้ HTTP ของ HTTY รวมถึงวิธีการตรวจสอบและทบทวนคำขอที่ผ่านมา
HTTPS: // Scheme และ Port 443 แสดงถึงกันและกันเช่นเดียวกับ HTTP: // Scheme และพอร์ต 80 หมายถึงกันและกัน หากคุณละเว้นโครงการหรือพอร์ตมันจะเริ่มต้นเป็นค่าที่เหมาะสม
ขอให้สังเกตว่าเมื่อมีการเสนอคุกกี้ในการตอบสนองเครื่องหมายดอกจันตัวหนา (ดูเหมือนคุกกี้) จะปรากฏขึ้นในบทสรุปการตอบสนอง สัญลักษณ์คุกกี้เดียวกันจะปรากฏขึ้นถัดจากส่วนหัวของ Set-Cookie เมื่อคุณแสดงส่วนหัวตอบกลับ
คำสั่ง cookies-use คัดลอกคุกกี้จากการตอบกลับไปยังคำขอถัดไป สัญลักษณ์คุกกี้จะปรากฏขึ้นถัดจากส่วนหัว คุกกี้ เมื่อคุณแสดงส่วนหัวคำขอ
ประวัติย่อมีให้ผ่านคำสั่ง history ข้อมูลเกี่ยวกับคำขอในประวัติศาสตร์รวมถึงวิธีการขอ URL จำนวนส่วนหัว (และสัญลักษณ์คุกกี้หากส่งคุกกี้) และขนาดของร่างกาย ข้อมูลเกี่ยวกับการตอบสนองในประวัติศาสตร์รวมถึงรหัสตอบกลับจำนวนส่วนหัว (และสัญลักษณ์คุกกี้หากได้รับคุกกี้) และขนาดของร่างกาย
โปรดทราบว่าประวัติมีเพียงการร้องขอ HTTP และคู่การตอบกลับที่มีหมายเลขเท่านั้นไม่ใช่บันทึกของคำสั่งทั้งหมดที่คุณป้อน
คำสั่ง reuse ใช้ทำสำเนาส่วนหัวและเนื้อหาของคำขอก่อนหน้านี้ให้คุณสร้าง
ตอนนี้เราจะดูการสนับสนุนการตรวจสอบความถูกต้องขั้นพื้นฐานของ HTTY ของ HTTY และเรียนรู้วิธีการแสดงการถอดเสียงที่ไม่ได้รับการบันทึกของเซสชัน 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 จัดหาในคำขอสัญลักษณ์ Mercantile Bold ( @ ) จะปรากฏขึ้นถัดจากส่วนหัว การอนุญาต ที่ได้เมื่อคุณแสดงส่วนหัวคำขอ (ดูด้านล่าง)
พิมพ์ชุด body-set เพื่อป้อนข้อมูลร่างกายและยุติโดยการป้อนเส้นเปล่าสองเส้นติดต่อกันหรือโดยการกดปุ่ม CTRL-D ร่างกายจะถูกส่งไปที่ โพสต์ และ วาง คำขอเท่านั้น ส่วนหัว ความยาวเนื้อหา ที่เหมาะสมถูกสร้างขึ้นสำหรับคุณโดยอัตโนมัติ (ดูด้านล่าง)
รหัสการตอบสนองที่แตกต่างกันจะแสดงด้วยสีที่แนะนำความหมายของพวกเขา:
เช่นเดียวกับประวัติย่อที่แสดงให้เห็นก่อนหน้านี้ประวัติความเป็นมาของ Verbose แสดงรายการคำขอหมายเลขและการตอบกลับที่พวกเขาออกมา ข้อมูลทั้งหมดที่แลกเปลี่ยนระหว่างไคลเอนต์และเซิร์ฟเวอร์แสดงขึ้น
คุณสามารถเรียนรู้วิธีใช้คำสั่ง htty จากภายใน htty
คำสั่ง help ใช้อาร์กิวเมนต์เสริมของชื่อตัวย่อหรือชื่อเต็มของคำสั่ง
รายงานข้อบกพร่องและการร้องขอคุณสมบัติเกี่ยวกับปัญหา GitHub
ยินดีต้อนรับแพตช์ของคุณและคุณจะได้รับการระบุแหล่งที่มาที่นี่เพื่อสิ่งที่ดี แยกที่เก็บ HTTY อย่างเป็นทางการและส่งคำขอดึง
หลังจากโคลนนิ่งที่เก็บข้อมูล bin/setup เพื่อติดตั้งการพึ่งพา จากนั้น rake ทำการทดสอบ นอกจากนี้คุณยังสามารถ bin/console เพื่อรับพรอมต์แบบโต้ตอบที่จะช่วยให้คุณสามารถทดลองได้
ในการติดตั้งอัญมณีนี้ลงในเครื่องในเครื่องของคุณ bundle exec rake install หากต้องการเปิดตัวเวอร์ชันใหม่ให้อัปเดตหมายเลขเวอร์ชันใน lib/htty/version.rb จากนั้น bundle exec rake release ซึ่งจะสร้างแท็ก GIT สำหรับเวอร์ชันกด GIT และแท็กและกดไฟล์ . gem ไปที่ rubygems.org
ติดต่อกับโครงการ HTTY โดยติดตาม @get_htty บน Twitter
นอกจากนี้คุณยังสามารถขอความช่วยเหลือใน #Htty Channel บน FreeNode
Nils Jonsson ผู้เขียนเป็นหนี้ของแรงบันดาลใจให้กับโครงการ HTTP-Conole
ขอบคุณผู้มีส่วนร่วม (ตามลำดับตัวอักษร):
ปล่อยภายใต้ใบอนุญาต MIT