2012-12-04 17 views
25

Tôi đã cố gắng hiểu @POST trong dịch vụ web RESTful bằng Jersey. Tôi đã trải qua http://www.vogella.com/articles/REST/article.html cho cùng và đã có thể nhận được một số thông tin về @POST, nhưng cảm thấy khó hiểu và vụng về. Bất cứ ai có thể giải thích @POST với một ví dụ đơn giản hoặc liên kết chia sẻ về giống nhau.@POST trong dịch vụ web RESTful

Thực hiện @POST thông qua các đối tượng TODO trong liên kết ở trên là tốt nhưng tôi muốn tìm hiểu @POST thông qua một số ví dụ đơn giản khác để tôi có thể tiếp tục phát triển các ví dụ phức tạp @POST của riêng mình.

Trợ giúp sẽ được đánh giá cao, Cảm ơn bạn.

+0

Bạn đã xem http://en.wikipedia.org/wiki/POST_(HTTP) để hiểu rõ hơn về quy trình chưa? – condit

+0

Cảm ơn dude ... nó đã thực sự hữu ích để hiểu được chủ đề. Sẽ rất hữu ích nếu bạn chia sẻ một số thông tin về Bảo mật các dịch vụ web RESTful. Tôi muốn tạo các dịch vụ web bảo mật. Bất kỳ liên kết hoặc hướng dẫn mà sẽ cung cấp các thông tin cần thiết rõ ràng .. ?? –

+2

kiểm tra liên kết này http://docs.oracle.com/cd/E19798-01/821-1841/6nmq2cp1v/index.html. Nó có một lời giải thích rõ ràng về các dịch vụ web an toàn –

Trả lời

18

REST của webservice: (http: // localhost: 8080/bạn ứng dụng/phần còn lại/data/bài)

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(); 
    } 

Khách hàng gửi một bài:

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

Hi Jose, nó thực sự tốt và hữu ích. Bạn có thể vui lòng cung cấp cho tôi mã mẫu có chú thích DELETE và PUT không. Vì vậy, tôi có thể đi trước trong việc tạo ra một số mã phức tạp hơn. Cảm ơn –

+0

ví dụ hay. làm việc tốt. –

23

Hãy tìm ví dụ dưới đây, nó có thể giúp bạn

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(); 
    } 
} 

để thử nghiệm bạn có thể sử dụng bất kỳ công cụ nào như RestClient (http://code.google.com/p/rest-client/)

Các vấn đề liên quan