Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
minLevel1
maxLevel2
outlinefalse
typelist
printablefalse

This section provides general information about the SCSP READ method that applies to both named and unnamed objects.

READ is a request to the storage cluster for a specific object. The READ request is formatted as an HTTP request using the GET method.

SCSP Method

HTTP Method

RFC 7231 Section

READ

GET

4.3.1

READ for

...

Named Objects

Code Block
languagexml
GET /mybucket/samplefile.txt HTTP/1.1
Host: cluster.example.com
User-Agent: Swarm Client/0.1

READ for

...

Unnamed Objects

Code Block
languagexml
GET /12BFEA648C2697A56FD5618CAE15D5CA HTTP/1.1 
Host: cluster.example.com 
User-Agent: Swarm Client/0.1

Swarm makes no assumptions about User-Agent (except it is an HTTP/1.1 client). The Host header is mandatory and must conform to the requirements of Section 14.23 in the HTTP/1.1 specification. Insert excerptWRITE for Unnamed Objects

Warning

Error

Error loading excerpt from "WRITE for Unnamed Objects

...

".

READ for

...

Erasure-

...

Coded Objects

Erasure coding objects on disk allows storing large objects in the cluster with a smaller storage footprint, compared to earlier versions of Swarm.

See Working with Large Objects.

READ is affected by the checkIntegrity=yes query argument used to verify all segments are found before executing the READ.

See SCSP Query Arguments.

READ with

...

Content Validation

To validate the content during a read, add the query argument validate=yes to the URI:

...

Using this argument, the content digest is computed and compared at the end. A hash mismatch causes the socket connection to be dropped before sending the final bytes.

READ for

...

Node Status and Cluster Capacity

A READ request can be submitted without a name or UUID:

...

This information is also available on the Node Status page that appears when navigating to a node's IP address with the designated SCSP port (for example, http://192.168.99.100:80).

READ with

...

Range Headers

In some cases, an application may be interested in a byte portion of a larger object stored in Swarm. Rather than read the entire object and filter out the interesting parts, the application can include one or more Range headers with an SCSP READ request. A READ request can include more than one Range header.

...

Below are some examples and interpretations:

Range

Returns

0-499

First 500 bytes of the object

500-999

The second 500 bytes

-500

Last 500 bytes

0-499, 500-999

First 1000 bytes

...

Note

Range headers are not compatible with either integrity seals or the ContentMD5 header because both require a hash of the object's entire contents. The connection is closed as if the integrity seal or the Content-MD5 was invalid if the range is not set to a value greater than or equal to the size of the object.

READ requests that include invalid Range headers (ranges not existing in the object) cause Swarm to respond with a 416 (Range not satisfiable) error. A successful response to a READ that includes one or more Range headers is 206 (Partial content). Data in the requested ranges are included in the 206 response.

...

See 14.35 (Range)and Appendix 19.2 (Internet Media Type multipart/byteranges) in HTTP/1.1 RFC.

...

Note

Entering a range with the range in reverse order (where the end of the range is entered first) returns the entire object. For example, Range: 999-500 returns all content in the object. The range header is essentially ignored.

...