The mist is clearing ...

… but I’m not sure yet whether what’s being revealed is a bright sun, a dense forest, or more mist. In any case, it’s an interesting journey, and on the whole, enlightening.

I’m trying to understand more about REST. To that end, I’ve just written a little RESTful interface to RT (Request Tracker), in the form of an Apache mod_perl handler, so that I can create new and correspond on existing tickets via a simple interface that I can call from my other apps.

Creating a ticket:

POST /ticket (queue, subject, email, and initial ticket query supplied in body) ... 201 Created Location: /ticket/42

Corresponding on a ticket:

PUT /ticket/42 (correspondence supplied in body, will be appended to the ticket history) ... 200 OK

(Hmm, perhaps that should that be PUT to /ticket/42/history, returning a 201 with a unique URI for that particular piece of correspondence, e.g. /ticket/42/history/20020715115442).

Getting info on a ticket:

GET /ticket/42 or GET /ticket/42/basics or GET /ticket/42/history ... 200 OK (ticket info)

I’m glad I had my copy of the excellent Writing Apache Modules with Perl and C close to hand, to remind me of things like $r->customresponse() and Apache::Constants->export(qw(HTTPCREATED)).