Tim Hodson wrote:
> In terms of versioning and user readability (you never know someone
> may want to bookmark a url :) ), you could perhaps try a url that
> looked something like this using two examples above:
>
> http://dewey.library.nd.edu/mylibrary/ws/v1/facets/
How do I get Apache to execute a CGI script in the middle of a URL?
I have been reading RESTful Web Services in an effort to learn how to
create a "good" Web Services interface to MyLibrary. Similar to the
URL above, it advocates against (simple/traditional) name/value pairs
specified in a GET request. Instead it advocates for the fuller use
of HTTP methods such as GET, HEAD, POST, PUT, DELETE, TRACE, and
OPTIONS in combination with path_info data used for input. In such an
environment an HTTP GET request would retrieve data. PUT might create
data. POST might edit data. DELETE would... delete data. Etc. I can
live with this even though it is not the way I would have done it on
my own.
Thus, one of my URL's might look like this:
http://example.edu/mylibrary/resource
Sent as a GET request, the response would be an XML (or JSON) stream
of data listing resource names or IDs . The following URL, sent as a
PUT request might create a resource:
http://example.edu/mylibrary/resource/Wikipedia
All of this is fine and dandy. Writing a CGI script (server
application) that looks at the HTTP method and parses the path_info (/
resource/Wikipedia) and branches accordingly is rather trivial.
My problem is getting Apache to know that /resource/Wikipedia is
intended to be input for the script named mylibrary. When I pass
something like the URL directly above to my script Apache comes back
and says, "File not found" because it is looking for a directory/file
named Wikipedia. How do I get Apache to execute the script named
mylibrary? I could specify the URL like the following, but it is ugly:
http://example.edu/mylibrary/index.cgi/resource/Wikipedia
What am I doing wrong? How do I need to configure Apache accordingly?
--
Eric Lease Morgan
University Libraries of Notre Dame
|