halchemy
HAL for humans
Do you have an API that serves data following the HAL specification? The halchemy library makes it easy for your client to make the most of that API.
Getting Started
Install halchemy using the package manager of your chosen language:
Python
pip install halchemy
Javascript
npm install halchemy
Ruby
gem install halchemy
In your code, create an Api
object with the URL of your API.
Python
from halchemy import Api
api = Api('http://example.org/api')
root = api.root.get() # get the root resource
people = api.follow(root).to('people').get() # follow the people rel to get the list of people
# Issue a refund of $5 to everyone
for person in people['_items']:
account = api.follow(person).to('account').get()
api.follow(account).to('deposit').post({'amount':5.00})
print(f"{person['name']} has a new balance of ${account['balance']}")
Javascript
import { Api } from 'halchemy'
const api = new Api('http://example.org/api')
const root = api.root.get() // get the root resource
const people = api.follow(root).to('people').get() // follow the people rel to get the list of people
// Issue a refund of $5 to everyone
for (const person of people._items) {
const account = async api.follow(person).to('account').get()
async api.follow(account).to('deposit').post({amount:5.00})
console.log(`${person.name} has a new balance of ${account.balance}`)
}
Ruby
require "halchemy"
api = Halchemy::Api.new "http://example.org/api"
root = api.root.get # get the root resource
people = api.follow(root).to("people").get # follow the people rel to get the list of people
# Issue a refund of $5 to everyone
people['_items'].each do |person|
account = api.follow(person).to("account").get
api.follow(account).to("deposit").post({ "amount" => 5.00 })
end
Read the docs to learn more!