2012-12-04 38 views
25

Jerseyを使用してRESTful Webサービスで@POSTを理解しようとしています。私は同じためにhttp://www.vogella.com/articles/REST/article.htmlを行って、@ポストに関するいくつかの情報を得ることができましたが、混乱し、塊状に感じました。誰も@POSTを簡単な例で説明することも、同じものについてリンクを共有することもできます。@POST in RESTful Webサービス

上記のリンクで@POST〜TODOオブジェクトを実装するのは問題ありませんでしたが、私は自分の複雑な@POSTの例を開発するためにいくつかの他の簡単な例を使って@POSTを学びたいと思います。

助けが受け入れられるでしょう、 ありがとうございます。

+0

プロセスのより基本的な理解を得るためにhttp://en.wikipedia.org/wiki/POST_(HTTP)を見ましたか? – condit

+0

おかげで...この話題を理解することは本当に役に立ちました。 RESTful Webサービスのセキュリティに関する情報を共有すると非常に役に立ちます。私は安全なWebサービスを作りたいと思います。必要な情報を明確に伝えるリンクやチュートリアルは何ですか? –

+2

このリンクをチェックしてください http://docs.oracle.com/cd/E19798-01/821-1841/6nmq2cp1v/index.html 安らかなWebサービスについての明確な説明があります –

答えて

18

RESTのWebサービス:(にhttp:// localhost:8080 /あなたのアプリ/休憩/データ/ポスト)

package com.yourorg.rest; 

import javax.ws.rs.Consumes; 
import javax.ws.rs.POST; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.Response; 

    @Path("/data") 
public class JSONService { 

    @POST 
    @Path("/post") 
    @Consumes(MediaType.APPLICATION_JSON) 
    public Response createDataInJSON(String data) { 

     String result = "Data post: "+data; 

     return Response.status(201).entity(result).build(); 
    } 

クライアントはポストを送信:

package com.yourorg.client; 

import com.sun.jersey.api.client.Client; 
import com.sun.jersey.api.client.ClientResponse; 
import com.sun.jersey.api.client.WebResource; 

public class JerseyClientPost { 

    public static void main(String[] args) { 

    try { 

     Client client = Client.create(); 

     WebResource webResource = client.resource("http://localhost:8080/your-app/rest/data/post"); 

     String input = "{\"message\":\"Hello\"}"; 

     ClientResponse response = webResource.type("application/json") 
      .post(ClientResponse.class, input); 

     if (response.getStatus() != 201) { 
      throw new RuntimeException("Failed : HTTP error code : " 
       + response.getStatus()); 
     } 

     System.out.println("Output from Server .... \n"); 
     String output = response.getEntity(String.class); 
     System.out.println(output); 

     } catch (Exception e) { 

     e.printStackTrace(); 

     } 

    } 
} 
+0

こんにちはJoseさん、本当によかったです。サンプルコードにDELETEとPUTアノテーションを提供してください。だからもっと複雑なコードを作ることができます。ありがとう –

+0

良い例です。うまく動作します。 –

23

以下の例を見つけてください、それはあなたがRestClient(http://code.google.com/p/rest-client/)のような任意のツールを使用することができますテストするためにあなたに

package jersey.rest.test; 

import javax.ws.rs.DELETE; 
import javax.ws.rs.GET; 
import javax.ws.rs.HEAD; 
import javax.ws.rs.POST; 
import javax.ws.rs.PUT; 
import javax.ws.rs.Path; 
import javax.ws.rs.PathParam; 
import javax.ws.rs.core.Response; 

@Path("/hello") 
public class SimpleService { 
    @GET 
    @Path("/{param}") 
    public Response getMsg(@PathParam("param") String msg) { 
     String output = "Get:Jersey say : " + msg; 
     return Response.status(200).entity(output).build(); 
    } 

    @POST 
    @Path("/{param}") 
    public Response postMsg(@PathParam("param") String msg) { 
     String output = "POST:Jersey say : " + msg; 
     return Response.status(200).entity(output).build(); 
    } 

    @POST 
    @Path("/post") 
    //@Consumes(MediaType.TEXT_XML) 
    public Response postStrMsg(String msg) { 
     String output = "POST:Jersey say : " + msg; 
     return Response.status(200).entity(output).build(); 
    } 

    @PUT 
    @Path("/{param}") 
    public Response putMsg(@PathParam("param") String msg) { 
     String output = "PUT: Jersey say : " + msg; 
     return Response.status(200).entity(output).build(); 
    } 

    @DELETE 
    @Path("/{param}") 
    public Response deleteMsg(@PathParam("param") String msg) { 
     String output = "DELETE:Jersey say : " + msg; 
     return Response.status(200).entity(output).build(); 
    } 

    @HEAD 
    @Path("/{param}") 
    public Response headMsg(@PathParam("param") String msg) { 
     String output = "HEAD:Jersey say : " + msg; 
     return Response.status(200).entity(output).build(); 
    } 
} 

を助けるかもしれない