Этот пакет будет проанализировать типы 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
. Его конструктор берет строку, которую он попытается разобрать в типе патрона; Если диапазон не удается, будет выброшена Error
.
parse()
В качестве альтернативы конструктору вы можете использовать MIMEType.parse(string)
. Единственное отличие состоит в том, что parse()
будет возвращать null
при неудавшемся анализе, тогда как конструктор бросится. Таким образом, это имеет смысл использовать конструктор в тех случаях, когда непреодолимые типы MIME будут исключительными, и использовать parse()
при работе с вводом из некоторого не ограниченного источника.
type
: тип типа MIME, например, "text"
subtype
: подтип типа MIME, например "html"
essence
: сущность типа Mime, например "text/html"
parameters
: экземпляр MIMETypeParameters
, содержащий параметры типа этого MIME type
и subtype
могут быть изменены. Они будут проверены как непустые и содержат только точки кода токена HTTP.
essence
- это всего лишь Getter, и не может быть изменена.
parameters
также являются Getter, но содержимое объекта MIMETypeParameters
изменяемо, как описано ниже.
toString()
сериализует тип панели MIME на строкуisHTML()
: возвращает true, если этот экземпляр представляет собой тип HTML MimeisXML()
: возвращает true, если этот экземпляр представляет собой тип XML MimeisJavaScript({ prohibitParameters })
: возвращает true, если этот экземпляр представляет собой тип MIME JavaScript. prohibitParameters
можно настроить на True, чтобы запретить любые параметры, т.е. для проверки, является ли сериализация типа MIME - это матч эссенции типа MIME JavaScript. Примечание. Методы isHTML()
, isXML()
и isJavaScript()
являются спекулятивными и могут быть удалены или изменены в будущих основных версиях. Посмотрите на то, что в этой области/Mimesniff#48 для мозгового штурма. В настоящее время мы реализуем их в основном потому, что они полезны в JSDOM.
MIMETypeParameters
API Класс MIMETypeParameters
, экземпляры которых возвращаются mimeType.parameters
, имеет эквивалентный API поверхности на 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)
работает на таком объекте, отдавая строку в соответствии с алгоритмом сериализации.