APIs for beginners
What’s a REST API?
Put simply, an API is a formal line of communication between two programs. A REST API is one that utilizes inherent features of the Web to enable communication between a client and a server. It’s important to note that APIs aren’t designed to be exposed to you, the end user, except through intermediary programs. Remember this when you’re experimenting directly with the API; otherwise you may get frustrated.
Omeka’s REST API
Omeka’s REST API provides an endpoint against which you can query,
create, update, and delete Omeka resources. Your Omeka endpoint is the
URL to your Omeka website followed by /api
, like this:
http://yourdomain.com/api
You can see which resources are available by appending
/resources?pretty_print
to your endpoint, like this:
http://yourdomain.com/api/resources?pretty_print
Here you are getting the /resources
resource as a
JSON object containing all the
available resources and other information about them. (?pretty_print
is helpful to get back nicely formatted JSON, but is not necessary.)
HTTP Request Methods
In the above response you’ll notice that all resources have at least one action. These actions, while not important to a beginner, correspond to HTTP request methods. These methods are central to REST, and you should know what they do:
GET
gets one or more representations of a resource;POST
creates a new resource and returns the representation of the newly created resource;PUT
modifies an existing resource and returns the representation of the newly modified resource;DELETE
deletes an existing resource.
Until you start building your own API client, you won’t need to make
POST
, PUT
, or DELETE
requests, but GET
is well suited
for beginners because you can run them directly from your Web browser,
as you probably did above with /resources
.
Omeka’s Resources and Representations
A representation, in this case, is a JSON object that represents an Omeka resource. In other words, you are not getting a resource itself, but rather a representation of it. This is very much like viewing an item on a Omeka website: the item show page is not the item itself, but a representation of the item.
Every Omeka website comes with the following resources, most of which should already be familiar to you as an Omeka user:
/collections
/items
/files
/item_types
/elements
/element_sets
/tags
One of the powerful features of the Omeka API is that plugins can add
more resources if they wish. If they do, you’ll see them on the
/resources
resource.
Using the Omeka API
Let’s take a look at the /items
resource by making a GET
request
to the following URL using your Web browser:
http://yourdomain.com/api/items
Assuming there are already items added to Omeka, you’ll see a JSON array
of item representations, each with an “id” (the item ID), a “url” (the
direct URL to that item), and other metadata about the item. Copy that
URL to your Web browser and make another GET
request (you’ll first
need to remove backslashes from the URL, which were a necessary part of
JSON formatting):
http://yourdomain.com/api/items/:id
Where :id
is the item ID. You’ll see the same JSON representation of
the item, but by itself. This URL is the item’s canonical URL, that
is, it is an unambiguous and permanent link that represents the item
itself.
So far you’ve only been using the GET
method to get representations
of resources. To experiment with POST
, PUT
, and DELETE
you’ll need to use a program that is capable of sending those requests.
Most modern browsers have plugins that do this in a user-friendly way:
If you’re comfortable adding, modifying, and deleting Omeka resources, read the API documentation and start making requests!