REST = Representational State Transfer https://shengwangi.blogspot.com/2016/02/response-for-get-post-put-delete-in-rest.html?_sm_au_=iHVZSvGVVk7KGtQqsJk3kKtQTCQFp Table https://lh3.googleusercontent.com/-cpYCrP36Nc8/VsWO7emBMRI/AAAAAAAAAyU/0rv7Lnl0aNI/s1600-h/image%25255B5%25255D.png saved as ~/sharedhome/mydocs/restOperations.png I haven't seen explained how it handles operations upon elements, since it is all assignment-based. Operations: GET PUT POST DELETE are applied to collections and elements in different but similar ways. Nice table at https://en.wikipedia.org/wiki/Representational_state_transfer#Relationship_between_URL_and_HTTP_Methods and http://www.restapitutorial.com/lessons/httpmethods.html POST=insert. Other than generally only doing collection.POST to insert a new element, the other operations apply to either collection or element. Non-intuitives: Collection.PUT *REPLACES* the entire collection. *.POST creates a new Element and returns the new Element ID/URL. I.e., POST is what one would expect to be performed by a .put() operation. POST does NOT UPDATE any existing item. PUT and DELETE must be idempotent. PATCH vs. PUT PUT replaces everything in an existing record. PATCH does pointed updates to an existing record. Modify operation generally done by HTTP PATCH. https://restfulapi.net/http-methods/#patchhttps://restfulapi.net/http-methods/#patch JAX-RS. All of this straight from http://en.wikipedia.org/wiki/Jax-rs API for server-side annotations. Implementations Apache CXF Sun Jersey JBoss RESTEasy Restlet Apache Wink's server module ANNOTATIONS @Path relative path for resource class @GET, @PUT, @POST, @DELETE obviously... @Produces, @Consumes specifies returned/acceptable MIME media types @PathParam, @QueryParam, @HeaderParam, @CookieParam, @MatrixParam, @FormParam (Only works with POSTs and requires form mime-type) [+ RESTEasy-specific Form which assembles the bean from http params] RESTEasy @Provider? Servlet org.jboss...HttpServletDispatcher. (By default initializes too). OR org.jboss...FilterDispatcher (which allows for skipping non-JAX-RS URLs). Requires servlet init param javax.ws.rs.Application. I guess the root-level resource bean. About 10 other optionals. The servlet init param resteasy.sevlet.mapping.prefix must be set if you use a url-pattern other than /*. If the dispatcher servlet's initialization is too late (like if using Spring), then also add listener class ...ResteasyBootStrap. [I don't know if this is needed when using the FilterDispatcher]. SPRING RESTEasy provides its own SpringContextLoaderListener that checks all beans for REST annotations as they load. Constructor injection not supported. URLs Atomic: /resource/{id} ->200,404 LIST: /resource[?...] ->200,404