RESTful web service

View: New views
4 Messages — Rating Filter:   Alert me  

RESTful web service

by Motaz K. Saad :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello,

I am facing a problem implementing simple calculator using jersey (JAX-RS) https://jersey.dev.java.net/use/getting-started.html
Could any one help me out how to define 2 integer parameter and integer return value for GET http method.

Thanks in advance,
--
Motaz K. Saad


Re: RESTful web service

by Ayub Khan :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Motaz,

Please try this attached Resource Class. It contains following method
that does the calculator function and returns an xml representation of
the result.

    @GET
    @ProduceMime("application/xml")
    public String sum(@QueryParam ("x") Integer x, @QueryParam ("y")
Integer y) {
        return "<result type=\"int\">"+(x+y)+"</result>";
    }

If you want to know more on tools for building RESTful Web Services,
here is the link
http://www.netbeans.org/kb/60/websvc/rest.html

Thanks
Ayub

Motaz K. Saad wrote:

> Hello,
>
> I am facing a problem implementing simple calculator using jersey
> (JAX-RS) https://jersey.dev.java.net/use/getting-started.html
> Could any one help me out how to define 2 integer parameter and
> integer return value for GET http method.
>
> Thanks in advance,
> --
> Motaz K. Saad
>

/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
 *
 * The contents of this file are subject to the terms of either the GNU
 * General Public License Version 2 only ("GPL") or the Common
 * Development and Distribution License("CDDL") (collectively, the
 * "License"). You may not use this file except in compliance with the
 * License. You can obtain a copy of the License at
 * http://www.netbeans.org/cddl-gplv2.html
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
 * specific language governing permissions and limitations under the
 * License.  When distributing the software, include this License Header
 * Notice in each file and include the License file at
 * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Sun in the GPL Version 2 section of the License file that
 * accompanied this code. If applicable, add the following below the
 * License Header, with the fields enclosed by brackets [] replaced by
 * your own identifying information:
 * "Portions Copyrighted [year] [name of copyright owner]"
 *
 * Contributor(s):
 *
 * The Original Software is NetBeans. The Initial Developer of the Original
 * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
 * Microsystems, Inc. All Rights Reserved.
 *
 * If you wish your version of this file to be governed by only the CDDL
 * or only the GPL Version 2, indicate your decision by adding
 * "[Contributor] elects to include this software in this distribution
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
 * single choice of license, a recipient has the option to distribute
 * your version of this file under either the CDDL, the GPL Version 2 or
 * to extend the choice of license to its licensees as provided above.
 * However, if you add GPL Version 2 code and therefore, elected the GPL
 * Version 2 license, then the option applies only if the new code is
 * made subject to such option by the copyright holder.
 */

package helloworld;

import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.PUT;
import javax.ws.rs.ProduceMime;
import javax.ws.rs.ConsumeMime;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;

/**
 * REST Web Service
 *
 * @author __USER__
 */

@Path("/calc")
public class CalculatorResource {
    @Context
    private UriInfo context;
   
    /** Creates a new instance of HelloWorldResource */
    public CalculatorResource() {
    }
    /**
     * Retrieves representation of an instance of helloworld.HelloWorldResource
     * @return an instance of java.lang.String
     */
    @GET
    @ProduceMime("application/xml")
    public String sum(@QueryParam ("x") Integer x, @QueryParam ("y") Integer y) {
        return "<result type=\"int\">"+(x+y)+"</result>";
    }

    /**
     * PUT method for updating or creating an instance of HelloWorldResource
     * @param content representation for the resource
     * @return an HTTP response with content of the updated or created resource.
     */
    @PUT
    @ConsumeMime("application/xml")
    public void putXml(String content) {
    }
}

Re: RESTful web service

by Motaz K. Saad :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Thanks very much, I really appreciate your help

the URI for the resource for the calculator below is like this

http://localhost:8080/mws/resources/add?x=3&y=5

what if I want to pass Integer array as parameter ? what it will look like ?

Motaz

On Mon, Apr 21, 2008 at 11:42 PM, Ayub Khan <Ayub.Khan@...> wrote:
Hi Motaz,

Please try this attached Resource Class. It contains following method that does the calculator function and returns an xml representation of the result.

  @GET
  @ProduceMime("application/xml")
  public String sum(@QueryParam ("x") Integer x, @QueryParam ("y") Integer y) {
      return "<result type=\"int\">"+(x+y)+"</result>";
  }

If you want to know more on tools for building RESTful Web Services, here is the link
http://www.netbeans.org/kb/60/websvc/rest.html

Thanks
Ayub


Motaz K. Saad wrote:
Hello,

I am facing a problem implementing simple calculator using jersey (JAX-RS) https://jersey.dev.java.net/use/getting-started.html
Could any one help me out how to define 2 integer parameter and integer return value for GET http method.

Thanks in advance,
--
Motaz K. Saad



/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
 *
 * The contents of this file are subject to the terms of either the GNU
 * General Public License Version 2 only ("GPL") or the Common
 * Development and Distribution License("CDDL") (collectively, the
 * "License"). You may not use this file except in compliance with the
 * License. You can obtain a copy of the License at
 * http://www.netbeans.org/cddl-gplv2.html
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
 * specific language governing permissions and limitations under the
 * License.  When distributing the software, include this License Header
 * Notice in each file and include the License file at
 * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Sun in the GPL Version 2 section of the License file that
 * accompanied this code. If applicable, add the following below the
 * License Header, with the fields enclosed by brackets [] replaced by
 * your own identifying information:
 * "Portions Copyrighted [year] [name of copyright owner]"
 *
 * Contributor(s):
 *
 * The Original Software is NetBeans. The Initial Developer of the Original
 * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
 * Microsystems, Inc. All Rights Reserved.
 *
 * If you wish your version of this file to be governed by only the CDDL
 * or only the GPL Version 2, indicate your decision by adding
 * "[Contributor] elects to include this software in this distribution
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
 * single choice of license, a recipient has the option to distribute
 * your version of this file under either the CDDL, the GPL Version 2 or
 * to extend the choice of license to its licensees as provided above.
 * However, if you add GPL Version 2 code and therefore, elected the GPL
 * Version 2 license, then the option applies only if the new code is
 * made subject to such option by the copyright holder.
 */

package helloworld;

import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.PUT;
import javax.ws.rs.ProduceMime;
import javax.ws.rs.ConsumeMime;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;

/**
 * REST Web Service
 *
 * @author __USER__
 */

@Path("/calc")
public class CalculatorResource {
   @Context
   private UriInfo context;

   /** Creates a new instance of HelloWorldResource */
   public CalculatorResource() {
   }
   /**
    * Retrieves representation of an instance of helloworld.HelloWorldResource
    * @return an instance of java.lang.String
    */
   @GET
   @ProduceMime("application/xml")
   public String sum(@QueryParam ("x") Integer x, @QueryParam ("y") Integer y) {
       return "<result type=\"int\">"+(x+y)+"</result>";
   }

   /**
    * PUT method for updating or creating an instance of HelloWorldResource
    * @param content representation for the resource
    * @return an HTTP response with content of the updated or created resource.
    */
   @PUT
   @ConsumeMime("application/xml")
   public void putXml(String content) {
   }
}




Re: RESTful web service

by Ayub Khan :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Motaz,

You could use one of these approaches using MatrixParam. You could
infact replace MatrixParam and use QueryParam as earlier.

    @GET
    @ProduceMime("application/xml")
    public String add(@MatrixParam ("int_array") String intArray) {
        int total = 0;
        String[] ints = intArray.split(",");
        for(String i:ints)
            total += Integer.parseInt(i);
        return "<result type=\"int\">"+total+"</result>";
    }

Request:
http://localhost:8080/HelloWorld/resources/calc;int_array=1,2,3,4,5

Response:
<result type="int">15</result>

Alternatively, you could use a PUT/POST with content like

<add>1,2,3</add>

or

<add>
  <array type="int">
     <item>1</item>
     <item>2</item>
  </array>
</add>

Only issue with these approach is you need to use XML parser.

Thanks
Ayub

Motaz K. Saad wrote:

> Thanks very much, I really appreciate your help
>
> the URI for the resource for the calculator below is like this
>
> http://localhost:8080/mws/resources/add?x=3&y=5 
> <http://localhost:8080/mws/resources/add?x=3&y=5>
>
> what if I want to pass Integer array as parameter ? what it will look
> like ?
>
> Motaz
>
> On Mon, Apr 21, 2008 at 11:42 PM, Ayub Khan <Ayub.Khan@...
> <mailto:Ayub.Khan@...>> wrote:
>
>     Hi Motaz,
>
>     Please try this attached Resource Class. It contains following
>     method that does the calculator function and returns an xml
>     representation of the result.
>
>       @GET
>       @ProduceMime("application/xml")
>       public String sum(@QueryParam ("x") Integer x, @QueryParam ("y")
>     Integer y) {
>           return "<result type=\"int\">"+(x+y)+"</result>";
>       }
>
>     If you want to know more on tools for building RESTful Web
>     Services, here is the link
>     http://www.netbeans.org/kb/60/websvc/rest.html
>
>     Thanks
>     Ayub
>
>
>     Motaz K. Saad wrote:
>
>         Hello,
>
>         I am facing a problem implementing simple calculator using
>         jersey (JAX-RS)
>         https://jersey.dev.java.net/use/getting-started.html
>         Could any one help me out how to define 2 integer parameter
>         and integer return value for GET http method.
>
>         Thanks in advance,
>         --
>         Motaz K. Saad
>
>
>
>     /*
>      * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>      *
>      * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
>      *
>      * The contents of this file are subject to the terms of either
>     the GNU
>      * General Public License Version 2 only ("GPL") or the Common
>      * Development and Distribution License("CDDL") (collectively, the
>      * "License"). You may not use this file except in compliance with the
>      * License. You can obtain a copy of the License at
>      * http://www.netbeans.org/cddl-gplv2.html
>      * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
>      * specific language governing permissions and limitations under the
>      * License.  When distributing the software, include this License
>     Header
>      * Notice in each file and include the License file at
>      * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
>      * particular file as subject to the "Classpath" exception as provided
>      * by Sun in the GPL Version 2 section of the License file that
>      * accompanied this code. If applicable, add the following below the
>      * License Header, with the fields enclosed by brackets [] replaced by
>      * your own identifying information:
>      * "Portions Copyrighted [year] [name of copyright owner]"
>      *
>      * Contributor(s):
>      *
>      * The Original Software is NetBeans. The Initial Developer of the
>     Original
>      * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
>      * Microsystems, Inc. All Rights Reserved.
>      *
>      * If you wish your version of this file to be governed by only
>     the CDDL
>      * or only the GPL Version 2, indicate your decision by adding
>      * "[Contributor] elects to include this software in this distribution
>      * under the [CDDL or GPL Version 2] license." If you do not
>     indicate a
>      * single choice of license, a recipient has the option to distribute
>      * your version of this file under either the CDDL, the GPL
>     Version 2 or
>      * to extend the choice of license to its licensees as provided above.
>      * However, if you add GPL Version 2 code and therefore, elected
>     the GPL
>      * Version 2 license, then the option applies only if the new code is
>      * made subject to such option by the copyright holder.
>      */
>
>     package helloworld;
>
>     import javax.ws.rs.Path;
>     import javax.ws.rs.GET;
>     import javax.ws.rs.PUT;
>     import javax.ws.rs.ProduceMime;
>     import javax.ws.rs.ConsumeMime;
>     import javax.ws.rs.QueryParam;
>     import javax.ws.rs.core.Context;
>     import javax.ws.rs.core.UriInfo;
>
>     /**
>      * REST Web Service
>      *
>      * @author __USER__
>      */
>
>     @Path("/calc")
>     public class CalculatorResource {
>        @Context
>        private UriInfo context;
>
>        /** Creates a new instance of HelloWorldResource */
>        public CalculatorResource() {
>        }
>        /**
>         * Retrieves representation of an instance of
>     helloworld.HelloWorldResource
>         * @return an instance of java.lang.String
>         */
>        @GET
>        @ProduceMime("application/xml")
>        public String sum(@QueryParam ("x") Integer x, @QueryParam
>     ("y") Integer y) {
>            return "<result type=\"int\">"+(x+y)+"</result>";
>        }
>
>        /**
>         * PUT method for updating or creating an instance of
>     HelloWorldResource
>         * @param content representation for the resource
>         * @return an HTTP response with content of the updated or
>     created resource.
>         */
>        @PUT
>        @ConsumeMime("application/xml")
>        public void putXml(String content) {
>        }
>     }
>
>
>