Paket ini akan menguraikan tipe mime ke dalam format terstruktur, yang kemudian dapat dimanipulasi dan diserialisasi:
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 ) ;
Parsing adalah proses yang cukup kompleks; Lihat spesifikasi untuk detail (dan serupa untuk serialisasi).
Algoritma paket ini sesuai dengan standar sniffing mime whatwg, dan diselaraskan untuk melakukan 8e9a7dd.
MIMEType
API Ekspor default modul utama paket ini adalah kelas, MIMEType
. Konstruktornya mengambil string yang akan dicoba untuk diurai menjadi tipe pantomim; Jika parsing gagal, Error
akan dilemparkan.
parse()
Sebagai alternatif untuk konstruktor, Anda dapat menggunakan MIMEType.parse(string)
. Satu -satunya perbedaan adalah bahwa parse()
akan mengembalikan null
pada parsing yang gagal, sedangkan konstruktor akan melempar. Dengan demikian, paling masuk akal untuk menggunakan konstruktor dalam kasus di mana tipe Mime yang tidak dapat dipisahkan akan luar biasa, dan menggunakan parse()
ketika berhadapan dengan input dari beberapa sumber yang tidak dibatasi.
type
: Jenis tipe mime, misalnya "text"
subtype
: subtipe tipe mime, misalnya "html"
essence
: The Mime Type's Essence, misalnya "text/html"
parameters
: Sebuah instance MIMETypeParameters
, berisi parameter tipe mime ini type
dan subtype
dapat diubah. Mereka akan divalidasi agar tidak kosong dan hanya berisi poin kode token HTTP.
essence
hanyalah pengambil, dan tidak dapat diubah.
parameters
juga merupakan pengambil, tetapi isi objek MIMETypeParameters
dapat berubah, seperti yang dijelaskan di bawah ini.
toString()
Serialisasi tipe mime ke stringisHTML()
: returns true jika instance ini mewakili tipe html mimeisXML()
: returns true jika instance ini mewakili tipe mime xmlisJavaScript({ prohibitParameters })
: Mengembalikan true jika instance ini mewakili tipe javascript pantomim. prohibitParameters
dapat disetel ke True untuk melarang parameter apa pun, yaitu untuk menguji apakah serialisasi tipe MIME adalah JavaScript Mime Type Essence Match. Catatan: metode isHTML()
, isXML()
, dan isJavaScript()
bersifat spekulatif, dan dapat dihapus atau diubah dalam versi utama di masa depan. Lihat Whatwg/Mimesniff#48 untuk brainstorming di daerah ini. Saat ini kami menerapkan ini terutama karena mereka berguna di JSDOM.
MIMETypeParameters
Kelas MIMETypeParameters
, yang dikembalikan oleh mimeType.parameters
, memiliki API permukaan yang setara dengan Map
JavaScript.
Namun, metode MIMETypeParameters
akan selalu menginterpretasikan argumen mereka sebagaimana mestinya untuk tipe MIME, jadi misalnya nama parameter akan lebih rendah, dan berusaha mengatur karakter yang tidak valid akan melempar.
Beberapa contoh:
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" ) ;
Jika Anda ingin primitif untuk membangun API Anda sendiri, Anda bisa mendapatkan akses langsung ke algoritma parsing dan serialisasi sebagai berikut:
const parse = require ( "whatwg-mimetype/parser" ) ;
const serialize = require ( "whatwg-mimetype/serialize" ) ;
parse(string)
Mengembalikan objek yang berisi string type
dan subtype
, plus parameters
, yang merupakan Map
. Ini kira -kira setara dengan catatan tipe MIME spec. Jika parsing gagal, ia malah mengembalikan null
.
serialize(record)
beroperasi pada objek semacam itu, memberikan kembali string sesuai dengan algoritma serialisasi.