HTTPQUERY
Bahasa Indonesia

207 Multi-Status

Penggunaan

Respons 207 Multi-Status muncul ketika satu permintaan HTTP menyentuh beberapa sumber daya sekaligus. Sebagai contoh, permintaan POST yang memperbarui beberapa basis data bisa saja berhasil pada sebagian dan gagal pada sebagian lainnya. Badan respons mencantumkan hasil masing-masing sumber daya.

Secara bawaan, badan respons berupa dokumen XML dengan elemen akar multistatus. Klien mengurai setiap simpul untuk menentukan hasil dari setiap sub-operasi.

Elemen akar memuat nol atau lebih elemen response dalam urutan apa pun. Setiap response menyertakan elemen href yang mengidentifikasi sumber daya target. Ada dua format: status mengacu pada sumber daya secara keseluruhan, atau pada properti tertentu dari sumber daya tersebut.

WebDAV

Kode status 207 Multi-Status terutama digunakan oleh WebDAV. Klien HTTP standar jarang menemui respons ini di luar alur kerja WebDAV.

Status sumber daya secara keseluruhan

Elemen anak status memuat kode status HTTP hasil untuk sumber daya yang diidentifikasi. Klien diharapkan menangani kode status HTTP standar yang ditemukan di sini.

<d:response>
  <d:href>http://example.re/tasks</d:href>
  <d:status>HTTP/1.1 200 OK</d:status>
</d:response>

Status properti individual

Metode PROPFIND dan PROPPATCH menggunakan propstat sebagai pengganti status untuk melaporkan properti individual sebuah sumber daya.

<d:response>
  <d:href>http://example.re/tasks</d:href>
  <d:propstat>
    <d:prop>
      <d:getcontentlanguage>
        "en-CA"
      </d:getcontentlanguage>
    </d:prop>
    <d:status>HTTP/1.1 200 OK</d:status>
  </d:propstat>
</d:response>

Indikasi keberhasilan atau kegagalan

Respons 207 Multi-Status menandakan keberhasilan menyeluruh, kegagalan menyeluruh, atau campuran keduanya. Klien memeriksa setiap elemen response untuk menilai kelengkapan operasi.

Contoh

Klien mengirimkan data XML ke server. Tiga sumber daya independen terlibat, dan server mengembalikan hasil tersendiri untuk masing-masing.

Dua sumber daya pertama berhasil: yang pertama tidak mengembalikan badan (204) dan yang kedua memastikan sebuah sumber daya baru telah dibuat (201). Sumber daya ketiga melaporkan error 423 karena ada kunci yang sedang dipegang. Klien menentukan apakah operasi secara keseluruhan berhasil atau gagal berdasarkan kode-kode individual ini.

Permintaan

POST /signup HTTP/1.1
Host: example.com
Content-Type: application/xml
Content-Length: 93

<?xml version="1.0"?>
<person>
  <name>David Smith</name>
  <country>USA</country>
</person>

Respons

HTTP/1.1 207 Multi-Status
Content-Type: application/xml; charset="utf-8"
Content-Length: 568

<?xml version="1.0" encoding="utf-8" ?>
<d:multistatus xmlns:d="DAV:">
  <d:response>
    <d:href>http://example.re/signup/r1</d:href>
    <d:status>HTTP/1.1 204 No Content</d:status>
  </d:response>
  <d:response>
    <d:href>http://example.re/signup/r2</d:href>
    <d:status>HTTP/1.1 201 Created</d:status>
  </d:response>
  <d:response>
    <d:href>http://example.re/signup/r3</d:href>
    <d:status>HTTP/1.1 423 Locked</d:status>
    <d:error><d:lock-token-submitted/></d:error>
  </d:response>
</d:multistatus>

Referensi kode

.NET

HttpStatusCode.MultiStatus

Rust

http::StatusCode::MULTI_STATUS

Rails

:multi_status

Go

http.StatusMultiStatus

Symfony

Response::HTTP_MULTI_STATUS

Python3.5+

http.HTTPStatus.MULTI_STATUS

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_MULTI_STATUS

Angular

@angular/common/http/HttpStatusCode.MultiStatus