From 88baa6eb7bbd937f524150109bb8925ab39f619a Mon Sep 17 00:00:00 2001 From: Sarven Capadisli Date: Tue, 9 Jun 2020 15:33:21 +0200 Subject: [PATCH] Revise resource type heuristics --- main/resource-access.bs | 106 +++++++--------------------------------- 1 file changed, 17 insertions(+), 89 deletions(-) diff --git a/main/resource-access.bs b/main/resource-access.bs index 9604ddd6..02fccc77 100644 --- a/main/resource-access.bs +++ b/main/resource-access.bs @@ -132,100 +132,28 @@ code. ### Resource type heuristics ### {#resource-type-heuristics} -The semantics of slashes in URI paths are shared ([[#uri-slash-semantics]]). +When creating new resources, servers can determine an effective request URI's +type by examining the URI path ending ([[#uri-slash-semantics]]). -Servers MUST apply the following heuristics to determine the request's -resource type and to construct the effective request URI for the target -resource of an HTTP `POST` -[[Source](https://github.com/solid/specification/issues/128#issuecomment-573033297)]. +Clients who want to assign a URI for their resource, MUST use PUT and PATCH +requests. Servers MAY allow clients to suggest the URI for a resource created +through POST, using the HTTP `Slug` header as defined in [[!RFC5023]]. -The consistency of a request is determined by checking the optional `Link` and -`Slug` headers against the target URI -[[Source](https://github.com/solid/specification/issues/40#issuecomment-566995240)]. +Clients who want the server to determine the URI for their resource, MUST use +the POST request. -Servers supporting the `Slug` header MUST apply the shared slash semantics on -the `slugtext` on requests that also include the `Link` header with -`rel="type"`. +Servers MUST allow creating new resources with a POST request to URI path +ending `/`. Servers MUST create a resource with URI path ending `/{id}` in +container `/`. Servers MUST create a container with URI path ending `/{id}/` +in container `/` for requests including the HTTP `Link` header with +`rel="type"` targeting a valid LDP container type. Servers MUST handle +subsequent requests to the newly created container's URI as if it is a valid +LDP container type by including it the HTTP response's `Link` header. -Issue: -Redefine `slugtext` eg. exclude recursive container creation? -[Related issue](https://github.com/solid/specification/issues/128) +Clients who want to create hierarchical containers MUST use PUT and PATCH +requests. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Heuristics to determine a resource type
`Slug``Link`Result
`foo/`No `Link` header.Create a container with `foo/` appended to the request-URI.
foo/`Link` header with `rel="type"` targeting a valid LDP container - type.Create a container with `foo/` appended to the request-URI.
foo/`Link` header without a `rel="type"` targeting a valid LDP container - type.Create a resource with `foo` appended to the request-URI, check for - consistency.
`foo`No `Link` header.Create a resource with `foo` appended to the request-URI, check for - consistency.
`foo``Link` header with `rel="type"` targeting a valid LDP container - type.Create a container with `foo/` appended to the request-URI.
`foo``Link` header without a `rel="type"` targeting a valid LDP container - type.Create a resource with `foo` appended to the request-URI, check for - consistency.
noneNo `Link` header.Create a resource with server determined identifier appended to the - request-URI, check for consistency.
none`Link` header with `rel="type"` targeting a valid LDP container - type.Create a container with server determined identifier appended to the - request-URI.
none`Link` header without a `rel="type"` targeting a valid LDP container - type.Create a resource with server determined identifier appended to the - request-URI, check for consistency.
-
+[[Source](https://github.com/solid/specification/pull/160#issuecomment-636822687)]. ## Auxiliary Resources ## {#rm}