이 패키지는 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 Sniffing Standard의 알고리즘을 준수하며 8e9a7dd를 커밋하기 위해 정렬됩니다.
MIMEType
API 이 패키지의 기본 모듈의 기본 내보내기는 클래스 인 MIMEType
입니다. 생성자는 문자열을 사용하여 마임 유형으로 구문 분석하려고합니다. 구문 분석이 실패하면 Error
발생합니다.
parse()
정적 공장 방법 생성자의 대안으로 MIMEType.parse(string)
사용할 수 있습니다. 유일한 차이점은 parse()
실패한 구문 분석에서 null
반환하는 반면 생성자는 던지는 것입니다. 따라서, 기교 불가능한 MIME 유형이 예외적 인 경우 생성자를 사용하는 것이 가장 합리적이며, 일부 제한되지 않은 소스의 입력을 처리 할 때 parse()
사용하는 것이 가장 의미가 있습니다.
type
: Mime Type의 유형, 예를 들어 "text"
subtype
: MIME 타입의 하위 유형, 예를 들어 "html"
essence
: Mime Type 's Essence, 예를 들어 "text/html"
parameters
:이 MIME 유형의 매개 변수를 포함하는 MIMETypeParameters
의 인스턴스 type
및 subtype
변경할 수 있습니다. 그들은 비어 있지 않은 것으로 확인되며 HTTP 토큰 코드 포인트 만 포함합니다.
essence
단지 getter이며 변경할 수 없습니다.
parameters
또한 getter이지만, MIMETypeParameters
객체의 내용은 아래에 설명 된 바와 같이 변수입니다.
toString()
MIME 유형을 문자열로 직렬화합니다isHTML()
:이 인스턴스가 HTML MIME 유형을 나타내는 경우 true를 반환합니다.isXML()
:이 인스턴스가 XML MIME 유형을 나타내는 경우 true를 반환합니다.isJavaScript({ prohibitParameters })
:이 인스턴스가 JavaScript MIME 유형을 나타내는 경우 true를 반환합니다. prohibitParameters
매개 변수를 허용하지 않도록 충실 할 수 있습니다. 즉, MIME Type의 직렬화가 JavaScript Mime Type Essence 일치인지 테스트합니다. 참고 : isHTML()
, isXML()
및 isJavaScript()
메소드는 투기 적이며 향후 주요 버전에서 제거되거나 변경 될 수 있습니다. 이 영역에서 브레인 스토밍은 Whatwg/Mimesniff#48을 참조하십시오. 현재 우리는 주로 JSDOM에서 유용하기 때문에 주로 구현합니다.
MIMETypeParameters
API MIMETypeParameters
클래스는 mimeType.parameters
에 의해 반환되는 인스턴스는 JavaScript Map
과 동등한 표면 API를 갖습니다.
그러나 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
문자열이 포함 된 객체와 Map
parameters
반환합니다. 이것은 대략 SPEC의 MIME 유형 레코드와 동일합니다. 구문 분석이 실패하면 대신 null
반환합니다.
serialize(record)
이러한 객체에서 작동하여 직렬화 알고리즘에 따라 문자열을 제공합니다.