該軟件包將將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 ) ;
解析是一個相當複雜的過程。有關詳細信息,請參見規範(類似於序列化)。
該軟件包的算法符合Whatwg Mime嗅探標準的算法,並與提交8E9A7DD保持一致。
MIMEType
API該軟件包的主模塊的默認導出是MIMEType
類。它的構造函數採用了一個將試圖將其解析為MIME類型的字符串;如果解析失敗,將丟棄Error
。
parse()
靜態工廠方法作為構造函數的替代方案,您可以使用MIMEType.parse(string)
。唯一的區別是parse()
將在解析失敗時返回null
,而構造函數將投擲。因此,在無可避免的MIME類型異常的情況下,使用構造函數是最有意義的,並且在處理來自某些無約束源的輸入時使用parse()
。
type
:MIME類型的類型,例如"text"
subtype
:MIME類型的亞型,例如"html"
essence
:啞劇類型的本質,例如"text/html"
parameters
: MIMETypeParameters
的實例,包含此MIME類型的參數可以更改type
和subtype
。它們將被驗證為非空的,僅包含HTTP代碼點。
essence
只是一個收穫,不能改變。
parameters
也是一個getter,但是MIMETypeParameters
對象的內容是可變的,如下所述。
toString()
將MIME類型序列到字符串isHTML()
:如果此實例代表HTML MIME類型,則返回trueisXML()
:如果此實例表示XML MIME類型,則返回trueisJavaScript({ prohibitParameters })
:如果此實例代表JavaScript MIME類型,則返回true。可以將prohibitParameters
設置為true以禁止任何參數,即測試MIME類型的序列化是否是JavaScript Mime類型的本質匹配。注意: isHTML()
, isXML()
和isJavaScript()
方法是投機性的,可以在將來的主要版本中刪除或更改。有關該領域的集思廣益,請參見Whatwg/Mimesniff#48。目前,我們實施這些主要是因為它們在JSDOM中很有用。
MIMETypeParameters
API MIMETypeParameters
類,其實例由mimeType.parameters
返回,具有等效的表面API與Map
aScript映射。
但是, 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)
在這樣的對像上運行,根據序列化算法回饋字符串。