Take a look at Liberator, which is specifically designed for building
REST APIs - but bear in mind the mindset of the Clojure community is
generally to compose several libraries to create the specific solution
you need, rather than having any "full stack" frameworks.

That said, 14 hours to create a RESTful web service for CRUD for a
single table seems excessive so I'd be curious exactly what you're
trying to achieve and why you're finding it so laborious? Perhaps if
you explain your requirements a bit more, we can offer better
suggestions...?

Sean

On Tue, Dec 3, 2013 at 3:26 PM, James Laver <james.la...@gmail.com> wrote:
> Hi all,
>
> I'm fairly new to clojure (a few months), but not new to lisp or indeed
> functional languages in general and I have around 10 years of experience
> programming dynamic languages in general.
>
> I've recently been using luminus to build a RESTful web API and I've been
> honestly surprised by how much code I've had to write to enable me to
> actually get things done while using it. I can't say I was expecting
> something full-stack like Django or Rails, but I wasn't expecting to have to
> write quite so much code to get simple things done. I've now spent around 14
> hours building a RESTful web service that handles CRUD for a single database
> table because I've had to solve so many things I've come up against.
>
> What I'm actually wondering here is what I'm missing. Is it that the entire
> clojurian approach is "here are the pieces, build a framework from them" or
> is it just that I've had terrible luck with libraries?
>
> Some examples:
> 1. The :params key is used by ring.middleware.params, compojure and
> ring.middleware.format so it's impossible to know where a given param is
> coming from
> 2. ring.middleware.params does not provide a convenience map that merges
> :query-params and :form-params, despite being happy to stuff everything into
> :params. At least ring.middleware.format adds :body-params here. I've now
> written a middleware to do this.
> 3. ring.middleware.keyword-params only keywordises the :params map, not the
> other maps. There is no configurable behaviour to ask it to do other maps.
> I've now written a middleware for this
> 4. migratus seems to have the smallest note ever in the documentation
> informing you that version numbers must be 14 digits long (i was using 12
> digits for a timestamp by not having the seconds listed). This seems like a
> really daft requirement in the first place.
> 5. every migrations library i've seen that doesn't work off raw SQL files is
> incapable of representing advanced features of my database of choice
> (postgresql)
> 6. lobos requires varchars to have a length limit applied (postgres does
> not)
> 7. the best way i've found of dealing with a database is korma. While korma
> does reduce some of the pain of SQL for standard things, it has limits and
> it doesn't save all that much pain.
>
> etc.
>
> So, am I missing something? Are there any libraries people can recommend
> that will make my life easier? Am I just looking at this in completely the
> wrong way?
>
> Thanks,
> James
>
> --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.



-- 
Sean A Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/
World Singles, LLC. -- http://worldsingles.com/

"Perfection is the enemy of the good."
-- Gustave Flaubert, French realist novelist (1821-1880)

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to