【问题标题】:@POST in RESTful web serviceRESTful Web 服务中的@POST
【发布时间】:2018-04-17 00:43:53
【问题描述】:

我一直在尝试使用 Jersey 来理解 RESTful Web 服务中的 @POST。我也经历过http://www.vogella.com/articles/REST/article.html,并且能够获得有关@POST 的一些信息,但感到困惑和笨拙。任何人都可以用一个简单的例子来解释@POST 或者分享相同的链接。

通过上面链接中的 TODO 对象实现 @POST 很好,但我希望通过其他一些简单的示例来学习 @POST,以便我可以继续开发自己的复杂 @POST 示例。

帮助将是可观的, 谢谢。

【问题讨论】:

标签: java rest jersey


【解决方案1】:

请在下面找到示例,它可能对您有所帮助

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

对于测试,您可以使用任何工具,例如 RestClient (http://code.google.com/p/rest-client/)

【讨论】:

    【解决方案2】:

    REST 网络服务:(http://localhost:8080/your-app/rest/data/post)

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

    【讨论】:

    • 嗨,何塞,这真的很好而且很有帮助。您能否为我提供带有 DELETE 和 PUT 注释的示例代码。这样我就可以继续创建一些更复杂的代码。谢谢
    • 这只是为我节省了一天,我很难让我的帖子请求使用 json。谢谢!
    猜你喜欢
    • 2016-02-18
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    相关资源
    最近更新 更多