HTTPQUERY
Bahasa Indonesia

206 Partial Content

Penggunaan

Kode status 206 Partial Content dikembalikan sebagai respons atas permintaan yang memuat satu atau beberapa header Range. Header Range menentukan bagian dokumen mana yang dikembalikan server, dan server secara opsional mengirimkan data tersebut sebagai dokumen multipart.

Ketika hanya satu header Range yang ditentukan, header Content-Length mencerminkan ukuran rentang yang ditransfer (yaitu kontennya), header Content-Type sesuai dengan tipe dokumen, dan header Content-Range menunjukkan bagian mana yang disertakan. Ukuran dokumen secara utuh muncul pada ruas complete-length di header Content-Range. Data yang diminta menyusul di badan pesan.

Untuk beberapa rentang sekaligus, header Content-Length menunjukkan total byte dalam badan pesan. Header Content-Type awal disetel ke multipart/byteranges, dan pasangan Content-Type / Content-Range berikutnya menjelaskan setiap rentang. Server tidak menyertakan ruas Content-Range pada header awal.

Pada permintaan multi-rentang, server secara opsional menggabungkan rentang yang tumpang-tindih atau rentang yang terpisah oleh celah yang lebih kecil daripada overhead pengiriman bagian tambahan. Hal ini dilakukan demi efisiensi, sehingga menerima bagian yang lebih sedikit daripada yang diminta tidak serta-merta menandakan kesalahan. Kebalikannya tidak berlaku: server tidak menghasilkan banyak bagian ketika hanya satu rentang yang diminta.

Selain jumlah rentang, urutan bagian juga tidak dijamin. Server berupaya mengirimkan rentang dengan urutan yang sama seperti yang diminta, tetapi hal itu tidak selalu dapat dilakukan.

Berapa pun jumlah rentang yang diminta, header Content-Range menyertakan ukuran total sumber daya. Ketika ukuran tersebut tidak diketahui pada saat respons dibuat, tanda bintang digunakan untuk menyatakan nilainya.

Ketika server tidak mampu mengembalikan rentang yang diminta, kode status 416 dikembalikan. Sebagian server justru mengembalikan 200 beserta seluruh dokumen di badan pesan.

Contoh pengambilan rentang tunggal

Klien meminta satu blok data di dalam berkas video menggunakan header Range. Server mengembalikan rentang yang diminta, dengan menandakan video berenkode MP4.

Permintaan

GET /videos/sample.mp4 HTTP/1.1
Host: example.com
Range: bytes=25000-75000

Respons

HTTP/1.1 206 Partial Content
Content-Type: video/mp4
Content-Length: 50001
Content-Range: bytes 25000-75000/100000

<50,001 bytes of video data>

Respons alternatif ketika ukuran total tidak diketahui

HTTP/1.1 206 Partial Content
Content-Type: video/mp4
Content-Length: 50001
Content-Range: bytes 25000-75000/*

<50,001 bytes of video data>

Contoh pengambilan multi-rentang

Ketika lebih dari satu rentang diminta, klien menentukan setiap rentang di dalam permintaan. Rentang ditempatkan pada baris yang berbeda atau dipisahkan koma pada baris yang sama. Server menggunakan pemisah berupa string untuk menandai batas antar bagian rentang.

Permintaan

GET /videos/sample.mp4 HTTP/1.1
Host: example.com
Range: bytes=100-250, 1500-2000, 5000-5200

Respons

HTTP/1.1 206 Partial Content
Content-Length: 1115
Content-Type: multipart/byteranges; boundary=range_sep

--range_sep
Content-Type: video/mp4
Content-Range: bytes 100-250/75000

<151 bytes of video data as the first range>

--range_sep
Content-Type: video/mp4
Content-Range: bytes 1500-2000/75000

<501 bytes of video data as the second range>

--range_sep
Content-Type: video/mp4
Content-Range: bytes 5000-5200/75000

<201 bytes of video data as the third range>

--range_sep--

Unduhan yang dapat dilanjutkan

Respons 206 Partial Content memungkinkan unduhan yang dapat dilanjutkan. Ketika sebuah transfer terputus, klien mengirimkan permintaan baru dengan header Range yang dimulai dari byte terakhir yang diterima. Server mengembalikan sisa data sebagai respons 206 alih-alih mengirim ulang seluruh sumber daya. Pengelola unduhan dan perkakas seperti curl —continue-at - mengandalkan mekanisme ini.

Referensi kode

.NET

HttpStatusCode.PartialContent

Rust

http::StatusCode::PARTIAL_CONTENT

Rails

:partial_content

Go

http.StatusPartialContent

Symfony

Response::HTTP_PARTIAL_CONTENT

Python3.5+

http.HTTPStatus.PARTIAL_CONTENT

Java

java.net.HttpURLConnection.HTTP_PARTIAL

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_PARTIAL_CONTENT

Angular

@angular/common/http/HttpStatusCode.PartialContent