Ogólne#

Body#

W tym miejscu umieszczam powtarzające się specyficzne pojęcia i algorytmy w interfejsie Body.

Pojęcia#

Obiekt implementujący interfejs Body jest skojarzony z ciałem # (body) [początkowo pustym strumieniem bajtów], flagą użycia # (used flag) [początkowo nieustawioną] i typem MIME # (MIME type) [początkowo pustą sekwencją bajtów].

Algorytmy#

consume body

Obiekt implementujący interfejs Body jest skojarzony z algorytmem konsumowania ciała # (consume body), który pobiera typ type i wykonuje następujące kroki:

  1. Niech p będzie nową obietnicą.
  2. Jeśli flaga użycia jest ustawiona, to odrzuć p z użyciem błędu JavaScript TypeError.
  3. W przeciwnym razie ustaw flagę użycia i wykonaj poniższe podkroki równolegle:

    1. Niech stream będzie ciałem.
    2. Jeśli stream jest wartością null, to ustaw stream na pustą sekwencję bajtów.
    3. Niech bytes będą wynikiem odczytu ze stream do chwili (until) zwrócenia końca strumienia.
    4. W oparciu o wartość type:

      ArrayBuffer

      Rozwiń p z użyciem ArrayBuffer, którego zawartością są bytes.

      Blob

      Rozwiń p z użyciem Blob, którego zawartością są bytes i wartością atrybutu type jest typ MIME.

      FormData

      Jeśli typem MIME (pomijając parametry) jest `multipart/form-data`, to wykonaj poniższe wewnętrzne podkroki:

      1. Parsuj bytes przy użyciu wartości parametru `boundary` z typu MIME i kodowania w postaci utf-8 (zgodnie z wymogami standardu RFC 2388 - "Returning Values from Forms: multipart/form-data").
      2. Jeśli to się nie uda z jakiegoś powodu, to odrzuć p z użyciem błędu JavaScript TypeError.
      3. W przeciwnym razie rozwiń p z użyciem nowego obiektu typu FormData, uruchamiając tworzenie wejścia dla każdego wejścia jako rezultat operacji parsowania i dołączania go do wejść.

      W przeciwnym razie, jeśli typem MIME (pomijając parametry) jest `application/x-www-form-urlencoded`, to wykonaj poniższe wewnętrzne podkroki:

      1. Niech entries będzie wynikiem uruchomienia parsera application/x-www-form-urlencoded z przekazaniem bytes.
      2. Jeśli entries jest błędem, to odrzuć p z użyciem błędu JavaScript TypeError.
      3. Rozwiń p z nowym obiektem typu FormData, którego wejściami jest entries.

      W przeciwnym razie odrzuć p z użyciem błędu JavaScript TypeError.

      JSON

      Niech JSON będzie wynikiem wywołania wewnętrznej wartości właściwości parse w obiekcie typu JSON, z przekazaniem argumentu będącego wynikiem dekodowania w utf-8 na bytes.

      Jeśli to zrzuci wyjątek, to odrzuć p z użyciem tego wyjątku.

      W przeciwnym razie rozwiń p z użyciem JSON.

      text

      Rozwiń p z użyciem wyniku dekodowania w utf-8 na bytes.

  4. Zwróć p.

extract

Aby wydobyć # (extract) strumień bajtów i wartość nagłówka `Content-Type` z obiektu object należy wykonać następujące kroki:

  1. Niech stream będzie pustym strumieniem bajtów.
  2. Niech Content-Type będzie wartością null.
  3. W zależności od typu object wykonaj następujące podkroki:

    Blob
    1. Wstaw kopię zawartość w object do stream.
    2. Jeśli właściwość type w object nie jest pustą sekwencją bajtów, to ustaw Content-Type na jej wartość.
    BufferSource
    1. Wstaw kopię object do stream.
    FormData
    1. Wstaw do stream wynik uruchomienia algorytmu kodowania multipart/form-data z przekazaniem object (jako form data set) i utf-8 (jako wyraźne kodowanie znaków).
    2. Ustaw Content-Type na `multipart/form-data;boundary=`, po której następuje tekstowy separator multipart/form-data wygenerowany przez algorytm kodowania multipart/form-data.
    URLSearchParams
    1. Wstaw do stream wynik uruchomienia serializera application/x-www-form-urlencoded na liście skojarzonej z object.
    2. Ustaw Content-Type na `application/x-www-form-urlencoded;charset=UTF-8`.
    USVString
    1. Wstaw do stream wynik kodowania w utf-8 na object.
    2. Ustaw Content-Type na `text/plain;charset=UTF-8`.
  4. Zwróć stream i Content-Type.
Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

Ogólne (H1) Body (H2) Pojęcia (H3) Algorytmy (H3) consume body (H4) extract (H4)