This short post publishes a Restful Web Service and then tests @Put and @Post methods using rest-shell.
Create the Service
Follow the instructions from my previous post: Produce Json From Restful CXF Web Service.
Once you have done this, modify the CustomerService as follows:
package com.skills421.services; import java.util.HashMap; import java.util.Map; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import org.springframework.stereotype.Service; import com.skills421.model.Customer; @Service @Path("/customer") public class CustomerService { private Map<Integer,Customer> customers = new HashMap<Integer, Customer>(); @PUT @Path("/add/{id}") @Consumes("application/json") public Response addCustomer(@PathParam("id") int id,Customer customer) { customers.put(id,customer); return Response.status(Status.OK).build(); } @GET @Path("/find/{id}") @Produces("application/json") public Response find(@PathParam("id") int id) { Customer customer = customers.get(id); return Response.status(Status.OK).entity(customer).type(MediaType.APPLICATION_JSON).build(); } @GET @Path("/default") @Produces("application/json") public Response getDefault() { Customer customer = new Customer(1,"Jon Doe",21); return Response.status(Status.OK).entity(customer).type(MediaType.APPLICATION_JSON).build(); } }
This provides methods to Put and Get data.
Test the Service using Rest-Shell
Open a terminal window and enter the following:
rest-shell baseUri http://localhost:8080/SimpleCXFRest/rest/customer get default
This will display the following:

Now enter the following:
put add/1 --data "{id:1,name:"Mark Doe",age:21}"
This will put Mark Doe to our service and display the following:

Finally, let’s check to see if our data was successfully uploaded by entering the following:
get find/1
and now we can see the following:
