2.2.7 Request Types
This document defines requests that a client can send to a data service.
The request types defined in this document either extend the request types defined in AtomPub, as specified in [RFC5023], by providing additional rules for each type. Or, they add additional types, in addition to those defined in [RFC5023].
In general, this document adopts the protocol semantics of AtomPub, as specified in [RFC5023], but extends AtomPub to allow the use of alternate formats (such as JSON as specified in [RFC4627]), in addition to Atom, and defines a URI addressing scheme for the abstract data model used in this document. This document's data model maps 1-to-1 to the model constructs defined in AtomPub and defines additional constructs not present in the AtomPub model.
As specified in [RFC5023] and extended in this section, the requests from the client and the corresponding responses from the server are exchanged using HTTP request methods. Each request type defined is mapped to an HTTP request method (for example, GET, POST, and so on) and HTTP request URI pair.
In general, the request types defined allow clients to:
Retrieve, edit, and delete Entity Data Model (EDM) constructs represented as data service or AtomPub resources using HTTP's GET, PUT, PATCH, and DELETE methods. For details, see Retrieve Request Types (section 2.2.7.2), Update Request Types (section 2.2.7.3), and Delete Request Types (section 2.2.7.4).
Insert new EntityType instances into an EntitySet represented as an AtomPub Collection. See Insert Request Types (section 2.2.7.1) for details.
Invoke a data service service operation. For further details see Invoke Request (section 2.2.7.5).
Package many requests using a batch request type. See Batch Request (section 2.2.7.6) for details.
Issue any of the above non-batch operations using a technique commonly referred to as POST tunneling (Tunneled Requests (section 2.2.7.7)).
This section defines the syntax rules for each request type. Any ABNF syntax rules that are not specified in [RFC5234] or [RFC4627] use the extensions defined in [RFC2616]. The following are common ABNF syntax rules used throughout this section.
-
HTTP-Header-Types = *((general-header ; see section 4.5 of [RFC2616] / request-header ; see section 5.3 of [RFC2616] / entity-header) CRLF ) ; see section 7.1 of [RFC2616]
Listing: Common Grammar Rules for Request Types