Export to GitHub

implementing-rest - ByLanguage.wiki


Introduction

This page lists REST frameworks categorized by supported languages.

Details

|Framework |RMM |conneg*|conditional**|cache***|Java|JAX-RS|.NET|Ruby|Python|Perl|PHP|Erlang|Java.mdScript|Clojure|Scala|Haskell| |:----------------------|:------------------|:--------|:--------------|:---------|:---|:-----|:---|:---|:-----|:---|:--|:-----|:-------------------|:------|:----|:------| |ActiveResource |? |? | | | | | |Yes | | | | | | | | | |BlueEyes |? |? |? |? | | | | | | | | | | |Yes | | |Bowler |? |? |? |? | | | | | | | | | | |Yes | | |compojureREST |? |Yes | | | | | | | | | | | |Yes | | | |Crochet |? |? |? |? | | | | | | | | | | |Yes | | |Django REST framework |? |Yes |Yes |Yes | | | | |Yes | | | | | | | | |Exyus |3[1] |Yes |Yes |Yes | | |Yes | | | | | | | | | | |FRAPI |3[2] |Yes | |Yes | | | | | | |Yes| | | | | | |Jersey |2 |Yes | | |Yes |Yes | | | | | | | | | | | |MindTouchDream |? | | |? | | |Yes | | | | | | | | | | |OpenRasta |? |? | | | | |Yes | | | | | | | | | | |Pinky |? |? |? |? | | | | | | | | | | |Yes | | |Ramone |? |Yes | | | | |Yes | | | | | | | | | | |Recess |? |Yes | | | | | | | | |Yes| | | | | | |Resauce |? |? | | | | | | | | |Yes| | | | | | |Resourceful |? |Yes |Yes |Yes | | | |Yes | | | | | | | | | |RESTEasy |? |Yes |Yes |Yes |Yes |Yes | | | | | | | | | | | |Restfulie |3 |Yes |Yes |Yes |Yes | |Yes |Yes | | | | | | | | | |Restish |? |Yes |Yes |? | | | | |Yes | | | | | | | | |REST in Akka|? |? |? |? | | | | | | | | | | |Yes | | |REST in HAppS |? |? |? |? | | | | | | | | | | | |Yes | |REST In Lift |? |? |? |? | | | | | | | | | | |Yes | | |REST In Python |? |? | | | | | | |Yes | | | | | | | | |REST In WCF|? |? | | | | |Yes | | | | | | | | | | |Restlet |? |Yes | | |Yes |Yes | | | | | | | | | | | |Persevere |3 |Yes |Yes | | | | | | | | | |Yes | | | | |Piston |? |Yes |Yes |Yes | | | | |Yes | | | | | | | | |Scalatra |? |? |? |? | | | | | | | | | | |Yes | | |Sinatra |2 |Yes |Yes | | | | |Yes | | | | | | | | | |Snooze |? |? | | | | |Yes | | | | | | | | | | |spray |? |? |? |? | | | | | | | | | | |Yes | | |Taimen |2 |Yes | | |Yes | | | | | | | | |Yes | | | |TastyPie |? |Yes |Yes |Yes | | | | |Yes | | | | | | | | |Unfiltered |? |? |? |? | | | | | | | | | | |Yes | | |VRaptor |? |? |? |? |Yes | | | | | | | | | |Yes | | |Webmachine |2 |Yes |Yes |Yes | | | | | | | |Yes | | | | | |Yesod |? |? |? |? | | | | | | | | | | | |Yes |

* conneg = Content Negotiation for Media Types, understanding and using the Accept-* headers

** conditional = Conditional requests on the client side, using Last-Modified and ETag headers, providing support for 304 Not Modified response. Server side support to conditional requests: providing both headers and 304 when required.

*** cache = Caching support on the client side (used for conditional requests and expiration policies through cache headers)

[1] Exyus does not automatically generate hypermedia links but developers have full control over representations via XSLT transformations

[2] FRAPI does not automatically generate hypermedia but instructs users on how to have full control over their representation.