home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Internet Info 1997 December
/
Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso
/
drafts
/
draft_n_r
/
draft-ota-http-version-00.txt
< prev
next >
Wrap
Text File
|
1996-11-06
|
11KB
|
331 lines
Internet Draft K. Ota, NTT
<draft-ntt-http-version-00> K. Takahashi, NTT
K. Sekiya, NTT Software
Expires May 1997 November 06, 1996
Version management with meta-level links via HTTP/1.1
Status of Memo
This document is an Internet-Draft. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its
areas, and its working groups. Note that other groups may also
distribute working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other
documents at any time. It is inappropriate to use Internet-
Drafts as reference material or to cite them other than as
``work in progress.''
To learn the current status of any Internet-Draft, please check
the ``1id-abstracts.txt'' listing contained in the Internet-
Drafts Shadow Directories on ftp.is.co.za (Africa),
nic.nordu.net (Europe), munnari.oz.au (Pacific Rim),
ds.internic.net (US East Coast), or ftp.isi.edu (US West Coast).
Distribution of this document is unlimited. Please send comments
to Kenji Ota, NTT (ota@nttlabs.com), Kenji Takahashi
(kt@nttlabs.com), or Kazuchika Sekiya (sekiya@ntts.com).
Abstract
This draft describes version management of the resources with
some extensions to HTTP/1.1.
The main point of our approach is to use meta-level links,
which is not an anchor of HTML format, but an attribute of the
resource. So, the contents need not to be an HTML format.
1. Introduction
Conventionally, most resources are linked each other with
links described in HTML files. This mechanism is not useful in
version management, because HTML files have to be edited in
order to manipulate the links between the versions of a
resource.
This document describes a mechanism for version management of
resources, which uses meta-level links. A meta-level link
relates two resources outside the contents of resources. So,
the contents need not to be an HTML format.
This document also describes the classification of the
PUT method. It is used for the server to distinguish between
normal resources and versioned resources.
The locking mechanism is also described. It prevents multiple
clients from editing the same resource at one time. So, our
policy of locking is similar to RCS.
2. Meta-level links
A meta-level link, that is meta-information of resources,
relates two resources outside the contents of resources.
It is independent from the contents of resource. So, the
content of the resource needs not to be HTML format.
The draft specification of HTTP/1.1[1] specifies "Link:"
header field in the appendices chapter.
The LINK and UNLINK methods manipulate the meta-level links. These
methods are also specified in the appendices chapter of
HTTP/1.1 specification.
If the GET or HEAD request sends to the server, the server
returns the "Link:" header in the response.
If the PUT request sends to the server with the "Link:"
header, the server establishes the links between the
resource specified by Request-URI and resources specified in
the "Link:" header.
The meta-level links can be used to manage the versions of the
resources. The chapter 5 describes details of version
management using this meta-level links. The meta-level links
themselves are so generic as to used for other purposes than
version management. For example, annotations to some web
contents can be linked by using this.
3. Locking mechanism
We propose LOCK/UNLOCK method for locking a resource.
Locking a resource means that the server excludes the other
requests for update to the same resource, in order to
make sure that only one user can update a resource while the
resource being locked.
We also propose "X-Lock:" header field.
It is assumed that the client and the server have some
authentication functions. This document does not refer to it.
3.1. LOCK/UNLOCK
The LOCK method requests that the server lock the
resource identified by the Request-URI.
The UNLOCK method requests that the server cancel the
lock status of the resource identified by the
Request-URI.
Only the user who has locked a resource can request PUT, POST,
LOCK or UNLOCK to it. Any users, however, can always request
GET, HEAD and LINK.
3.2. X-Lock: header field
The "X-Lock:" is a header in the server response that
represents the information about locking status of a requested
resource.
When the client sends a GET, HEAD or LOCK request to the
locked resource, the server returns the response including
the "X-Lock:" header. Then, the client can show the
information to the users. The followings are BNF and an
example of this header.
X-Lock = "X-Lock" ":" "user=" user_name ";" "date=" HTTP-date
user_name = 1*8(ALPHA | DIGIT)
ex.
X-Lock: user="sekiya"; date="Thu, 15 Feb 1996 23:44:20 GMT"
4. Creation and modification of web resources via HTTP
4.1. "X-PUT-Class" header field
We propose "X-PUT-Class" header field for the PUT method.
It specifies a type of a resource when the resource is
created. The server decides how to handle to the resource
according to the value of its field. The strings of "File",
"Mkdir" or "VersionedFile" are allowed as its value. The value
of the header field is stored as an attribute of the resource.
BNF is as follows,
PUT-Class = "X-PUT-Class" : PUT_type
PUT_type = ("File" | "Mkdir" | "VersionedFile")
The meaning of each values is as follows.
- "File"
The resource specified by the Request-URI is created
as a normal file. The PUT request to this type of
resource requests that the server overwrite the
contents with the new entity.
- "VersionedFile"
The resource specified by the Request-URI is created
as a versioned file. The PUT request to this type of
an existing resource means that the server creates a
new version of resource with the received entity.
- "Mkdir"
The resource specified by the Request-URI is created
as an identifier of a collection of resources, such a
directory, that manages the name for some resources
under it.
5. Versioning
We have decided our naming scheme based on the following:
(1) accessibility from existing browsers (e.g. Netscape)
(2) easy manipulation in existing directory-based file systems
(e.g. UNIX file system)
(3) ability of representing "composite" versions
(e.g. version 2 of composite resource that consists of
version 5 of X, a component resource, and version 3 of
Y, another component resource)
5.1. Naming Scheme
A series of versions of a resource is identified by a unique
directory name in a file system as a "representative"
URL. Each version of a resource is placed under the directory
and represented as follows:
representative_URL "/" version_number
For example, version 3 of
"http://www.nttlabs.com/project1/x.html" is represented as
follows:
http://www.nttlabs.com/project1/x.html/3
The latest version is referred by the representative URL and
specific version can be referred by the representative URL +
"/version_number". (Figure 1.)
In this way, users can access any version by existing
browsers and easily manipulate it in existing file systems.
5.2. Versioning by using Link mechanism
Each time a version of a resource has been revised, a new
version is created and given a new URL based on the naming
scheme described above. In the same time, the original and
new versions are linked bidirectionally with meta-level links.
A link named "new" is established from the original to new
versions and a link named "old" is established from the new to
original versions.
For example, Figure 1. illustrates links between
versions of a resource (http://host/some/resource).
http://host/some/resource --------+
|
------------------------------------------------- | --------
|
V
/1 /2 /3 /4
+----------+ +----------+ +----------+ +----------+
|+--------+| |+--------+| |+--------+| |+--------+|
|| new ||-->|| new ||-->|| new ||-->|| new ||
|| ||<--|| old ||<--|| old ||<--|| old ||
|+--------+| |+--------+| |+--------+| |+--------+|
|+--------+| |+--------+| |+--------+| |+--------+|
|| || || || || || || ||
|| || || || || || || ||
|| || || || || || || ||
|+--------+| |+--------+| |+--------+| |+--------+|
+----------+ +----------+ +----------+ +----------+
latest version
Figure 1. Links between versions of a resource
A particular version of a resource can be transmitted via
HTTP by specified by the "Content-Version:" field of HTTP
headers, or according to the naming scheme when using existing
clients. The following is an example of two type of
specifying some version of a certain resource.
http://www.nttlabs.com/project1/x.html/3
or
http://www.nttlabs.com/project1/x.html
Content-Version: "3"
5.3. Examples of HTTP interactions
5.3.1. Create a new resource
[request]
PUT http://server/path/resource
X-PUT-Class: VersionedFile
(contents of initial version)
[response]
201 Created
http://server/path/resource
Content-Version: "1"
5.3.2. Retrieve latest version
[request]
GET http://server/path/resource
(Retreive the latest version automatically)
[response]
200 OK
Content-Version: "5"
Link: <http://server/path/resource/4>; rel="old"
(contents of version 5)
5.3.3. Retrieve a particular version
[request]
GET http://server/path/resource
Content-Version: "3"
or
GET http://server/path/resource/3
[response]
200 OK
Content-Version: "3"
Link: <http://server/path/resource/2>; rel="old"
Link: <http://server/path/resource/4>; rel="new"
(contents of version 3)
5.3.4. Update an existing (versioned) resource
[request]
PUT http://server/path/resource
(changed contents)
[response]
201 Created
(Resource for new version are created, and establish
links between created version and its new/old version)
References
[1] R. Fielding, J. Gettys, J. C. Mogul, H. Frystyk and T. Berners-Lee,
"Hypertext Transfer Protocol -- HTTP/1.1,"
Internet Draft, Work in Progress, August 1996
[2] E. J. Whitehead, Jr.,
"Requirements on HTTP for Distributed Content Editing,"
Internet Draft, Work in Progress, September 1996
[3] T. Berners-Lee, L. Masinter, M. McCahill. "Uniform Resource
Locators (URL)." RFC 1738, CERN, Xerox PARC, University of
Minnesota, December 1994.
Author Address
Kenji Ota
NTT Software Laboratories
250 Cambridge Avenue, #205
Palo Alto, CA 94306, USA
Email: ota@nttlabs.com
Kenji Takahashi
NTT Multimedia Communications Laboratories
250 Cambridge Avenue, #205
Palo Alto, CA 94306, USA
Email: kt@nttlabs.com
Kazuchika Sekiya
NTT Software Corporation
250 Cambridge Avenue, #205
Palo Alto, CA 94306, USA
Email: sekiya@ntts.com