Last active
August 29, 2015 14:01
LFE Routes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defun routes | |
"Routes for the Volvoshop REST API." | |
;; /order | |
(((list "order") method arg-data) | |
(order-api method arg-data)) | |
;; /order/:id | |
(((list "order" order-id) method arg-data) | |
(order-api method order-id arg-data)) | |
;; /orders | |
(((list "orders") method arg-data) | |
(orders-api method arg-data)) | |
;; /payment/order/:id | |
(((list "payment" "order" order-id) method arg-data) | |
(payment-api method order-id arg-data)) | |
;; When nothing matches, do this | |
((path method arg) | |
(io:format | |
"Unmatched route!~nPath-info: ~p~nmethod: ~p~narg-data: ~p~n~n" | |
(list path method arg)) | |
(lfest-json-resp:not-found "Unmatched route."))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns volvo-store | |
(:use compojure.core) | |
(:require [compojure.route :as route])) | |
(defroutes handler | |
;; top-level | |
(GET "/" [] | |
"Welcome to the Volvo Store!") | |
;; single order operations | |
(POST "/order" [attrs] | |
(json-response (create-order attrs))) | |
(GET "/order/:id" [id] | |
(json-response (get-order id))) | |
(DELETE "/order/:id" [id] | |
(json-response (delete-order id))) | |
;; order collection operations | |
(GET "/orders" [] | |
(json-response (get-orders))) | |
;; payment operations | |
(GET "/payment/order/:id" [id] | |
(get-payment-status id)) | |
(PUT "/payment/order/:id" [id attrs] | |
(make-payment id attrs)) | |
;; error conditions | |
; XXX not sure how you'd do this in Compojure ... | |
; ('ALLOWONLY | |
; ('GET 'POST 'PUT 'DELETE) | |
; (lfest-json-resp:method-not-allowed)) | |
(route/not-found | |
"Bad path: invalid operation.")) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defmodule volvo-store | |
(export all)) | |
(include-lib "deps/lfest/include/macros.lfe") | |
(defroutes | |
;; top-level | |
('GET "/" | |
(lfest-html-resp:ok "Welcome to the Volvo Store!")) | |
;; single order operations | |
('POST "/order" | |
(create-order (lfest:get-data arg-data))) | |
('GET "/order/:id" | |
(get-order id)) | |
('PUT "/order/:id" | |
(update-order id (lfest:get-data arg-data))) | |
('DELETE "/order/:id" | |
(delete-order id)) | |
;; order collection operations | |
('GET "/orders" | |
(get-orders)) | |
;; payment operations | |
('GET "/payment/order/:id" | |
(get-payment-status id)) | |
('PUT "/payment/order/:id" | |
(make-payment id (lfest:get-data arg-data))) | |
;; error conditions | |
('ALLOWONLY | |
('GET 'POST 'PUT 'DELETE) | |
(lfest-json-resp:method-not-allowed)) | |
('NOTFOUND | |
(lfest-json-resp:not-found "Bad path: invalid operation."))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment