แพ็คเกจนี้จะแยกประเภท MIME เป็นรูปแบบที่มีโครงสร้างซึ่งสามารถจัดการและต่อเนื่องได้:
const MIMEType = require ( "whatwg-mimetype" ) ;
const mimeType = new MIMEType ( `Text/HTML;Charset="utf-8"` ) ;
console . assert ( mimeType . toString ( ) === "text/html;charset=utf-8" ) ;
console . assert ( mimeType . type === "text" ) ;
console . assert ( mimeType . subtype === "html" ) ;
console . assert ( mimeType . essence === "text/html" ) ;
console . assert ( mimeType . parameters . get ( "charset" ) === "utf-8" ) ;
mimeType . parameters . set ( "charset" , "windows-1252" ) ;
console . assert ( mimeType . parameters . get ( "charset" ) === "windows-1252" ) ;
console . assert ( mimeType . toString ( ) === "text/html;charset=windows-1252" ) ;
console . assert ( mimeType . isHTML ( ) === true ) ;
console . assert ( mimeType . isXML ( ) === false ) ;
การแยกวิเคราะห์เป็นกระบวนการที่ค่อนข้างซับซ้อน ดูข้อมูลจำเพาะสำหรับรายละเอียด (และทำนองเดียวกันสำหรับการทำให้เป็นอนุกรม)
อัลกอริทึมของแพ็คเกจนี้สอดคล้องกับมาตรฐานการดมกลิ่น MIME ของ WHATWG และได้รับการจัดตำแหน่งให้เป็น 8E9A7DD
MIMEType
api การส่งออกเริ่มต้นของโมดูลหลักของแพ็คเกจนี้คือคลาส MIMEType
ตัวสร้างของมันใช้สตริงซึ่งจะพยายามแยกวิเคราะห์เป็นประเภท MIME; หากการแยกวิเคราะห์ล้มเหลว Error
จะถูกโยนลงไป
parse()
โรงงานคงที่ เป็นทางเลือกแทนตัวสร้างคุณสามารถใช้ MIMEType.parse(string)
ความแตกต่างเพียงอย่างเดียวคือ parse()
จะส่งคืน null
ในการแยกวิเคราะห์ที่ล้มเหลวในขณะที่ตัวสร้างจะโยน มันทำให้รู้สึกมากที่สุดที่จะใช้ตัวสร้างในกรณีที่ประเภท MIME ที่ไม่สามารถแยกได้จะเป็นพิเศษและใช้ parse()
เมื่อจัดการกับอินพุตจากแหล่งที่ไม่มีข้อ จำกัด บางอย่าง
type
: ประเภทประเภท MIME เช่น "text"
subtype
: ประเภทย่อยของ MIME เช่น "html"
essence
: Essence ของ Mime Type เช่น "text/html"
parameters
: อินสแตนซ์ของ MIMETypeParameters
ที่มีพารามิเตอร์ประเภท MIME นี้ type
และ subtype
สามารถเปลี่ยนแปลงได้ พวกเขาจะได้รับการตรวจสอบว่าไม่ว่างเปล่าและมีเฉพาะคะแนนรหัสโทเค็น HTTP
essence
เป็นเพียง Getter และไม่สามารถเปลี่ยนแปลงได้
parameters
ยังเป็น getter แต่เนื้อหาของวัตถุ MIMETypeParameters
นั้นไม่แน่นอนดังที่อธิบายไว้ด้านล่าง
toString()
ทำให้ประเภท MIME เป็นสตริงisHTML()
: ส่งคืนจริงถ้าอินสแตนซ์นี้แสดงถึงประเภท MIME HTMLisXML()
: ส่งคืนจริงถ้าอินสแตนซ์นี้แสดงถึงประเภท MML MIMEisJavaScript({ prohibitParameters })
: ส่งคืนจริงถ้าอินสแตนซ์นี้แสดงถึงประเภท MIME JavaScript prohibitParameters
สามารถตั้งค่าเป็น True เพื่อไม่อนุญาตพารามิเตอร์ใด ๆ เช่นเพื่อทดสอบว่าการทำให้เป็นอนุกรมของ MIME นั้นเป็นการจับคู่ Essence ประเภท MIME JavaScript หรือไม่ หมายเหตุ: วิธีการ isHTML()
, isXML()
และ isJavaScript()
เป็นการเก็งกำไรและอาจถูกลบออกหรือเปลี่ยนแปลงในรุ่นหลักในอนาคต ดู whatwg/mimesniff#48 สำหรับการระดมสมองในพื้นที่นี้ ขณะนี้เราใช้สิ่งเหล่านี้เป็นหลักเพราะพวกเขามีประโยชน์ใน JSDOM
MIMETypeParameters
API คลาส MIMETypeParameters
, อินสแตนซ์ที่ถูกส่งคืนโดย mimeType.parameters
มีพื้นผิวที่เทียบเท่ากับ Map
JavaScript
อย่างไรก็ตามวิธี MIMETypeParameters
จะตีความอาร์กิวเมนต์ของพวกเขาเสมอตามความเหมาะสมสำหรับประเภท MIME ดังนั้นชื่อพารามิเตอร์เช่นจะลดลงและพยายามที่จะตั้งค่าอักขระที่ไม่ถูกต้องจะโยน
ตัวอย่างบางส่วน:
const mimeType = new MIMEType ( `x/x;a=b;c=D;E="F"` ) ;
// Logs:
// a b
// c D
// e F
for ( const [ name , value ] of mimeType . parameters ) {
console . log ( name , value ) ;
}
console . assert ( mimeType . parameters . has ( "a" ) ) ;
console . assert ( mimeType . parameters . has ( "A" ) ) ;
console . assert ( mimeType . parameters . get ( "A" ) === "b" ) ;
mimeType . parameters . set ( "Q" , "X" ) ;
console . assert ( mimeType . parameters . get ( "q" ) === "X" ) ;
console . assert ( mimeType . toString ( ) === "x/x;a=b;c=d;e=F;q=X" ) ;
// Throws:
mimeType . parameters . set ( "@" , "x" ) ;
หากคุณต้องการดั้งเดิมในการสร้าง API ของคุณเองคุณสามารถเข้าถึงอัลกอริทึมการแยกวิเคราะห์และการทำให้เป็นอนุกรมได้โดยตรงดังนี้:
const parse = require ( "whatwg-mimetype/parser" ) ;
const serialize = require ( "whatwg-mimetype/serialize" ) ;
parse(string)
ส่งคืนวัตถุที่มี type
และสาย subtype
รวมถึง parameters
ซึ่งเป็น Map
นี่คือการเทียบเท่ากับบันทึกประเภท MIME ของเรา หากการแยกวิเคราะห์ล้มเหลวมันจะส่งคืนค่า null
แทน
serialize(record)
ทำงานบนวัตถุดังกล่าวโดยให้สตริงกลับตามอัลกอริทึมการทำให้เป็นอนุกรม