Fedora REST API

Library module: Fedora REST API

Website

Maintainers

gourley

Description

fedora_rest is a module for building custom interfaces to Fedora Commons repositories. The Fedora REST API module provides a programming interface to invoke Fedora Commons REST methods. By itself, the module can be used to create a simple presentation layer for a collection of objects in the repository, without any module development or PHP coding. But its real power is as a rapid application development tool to code custom modules for creating, managing and publishing collections of complex digital objects.

The module provides a programming interface to invoke Fedora Commons REST methods, including a PHP class that encapsulates all the REST API methods so they can be easily invoked from other Drupal modules and PHP applications. It also defines a type of node (fedora_object) that represents a digital object in the repository. This content-type can be extended by defining a new content-type in a custom module and invoking the fedora_rest module's hook implementations to add the Fedora object attributes to the node. A template .module file is included to simplify the process of creating modules that extend the fedora_object content-type.

This module is based on work I did for the Digital Humanities Observatory which is described here: http://www.slideshare.net/gourley/integrating-drupal-fedora. The DHO and I are eager to work with other organizations and repositories to use and enhance this module for other use cases.

Drupal version compatibility

6.x

Comments

services module?

It looks like you didn't build this on top of the Services module, which provides a generic interface for Drupal via XML-RPC or SOAP or REST or whatever.

I'm just discovering the world of the Drupal Services module myself, and I don't know that much about Fedora, so could you say a little bit about how you chose to build an independent module?

So far I've found Services to have an even harder learning curve than Drupal in general, but I'm reading that the Services -3.x branch will be easier to work with.

Thanks!

Re: services module?

Thanks for commenting and bringing up the Services module. We were not aware of the Services module when we started developing the fedora_rest module (early 2009). It would be interesting to try it out for Fedora integration. In particular, I wonder how it would achieve "Integration with core Drupal functionality like files, nodes, taxonomy, users and more" which was an important requirement for us.

Another reason we developed an independent module is that we wanted a PHP class that implemented the Fedora REST API that we could use in PHP scripts and other non-Drupal contexts. And it looks to me like the Services module is more geared to exposing Drupal module functionality as web services rather than providing a mechanism to access external web services?

If you do end up using Services to connect Drupal to Fedora, please let us know what you discover.

A-ha! I had assumed your

A-ha! I had assumed your module allowed Drupal to act like a Fedora server via REST. Now I think it lets Drupal pull data from Fedora servers.

I'm not involved with collections at all, so no Fedora for me, which is part of where my confusion comes from.

The Services module comes with a lot of sub-modules that expose the node and taxonomy functions. It was pretty easy to write my own hooks on top of that to expose whatever you want. But again not what you are trying to do.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <em> <strong> <h3> <h4> <h5> <h6> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockquote>
  • Lines and paragraphs break automatically.
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Use [toc list: ol; title: Table of Contents; minlevel: 2; maxlevel: 3; attachments: yes;] to insert a mediawiki style collapsible table of contents. All the arguments are optional.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
 __   __  ____    _       _             ____  
\ \ / / | _ \ | |__ | |_ _ __ | _ \
\ V / | |_) | | '_ \ | __| | '_ \ | |_) |
| | | __/ | |_) | | |_ | |_) | | _ <
|_| |_| |_.__/ \__| | .__/ |_| \_\
|_|
Enter the code depicted in ASCII art style.