发布从请求正文获取数据,并返回json Jakarta.ws.rs

时间:2020-09-03 11:13:55

标签: rest web-services jakarta-ee jax-rs java-ee-8

我的任务是使用JAVA EE创建一个简单的Web api,并且无法使用其他外部框架,例如Spring Boot。

我得到的get请求很简单,但是,当我尝试将JSON返回给api时,即使创建了用户,我在邮递员或浏览器中看到的只是{}。

这是我当前的代码

package ab.service;

import jakarta.ws.rs.ApplicationPath;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.Application;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;

@Path("/MyRestService")
@ApplicationPath("resources")
public class RestService extends Application {
    // http://localhosts:8080/BankTaskV1/ressources/MyRestService/sayHello
    @GET
    @Path("/sayHello")
    public String getHelloMsg() {
        return "Hello World";
    }

    @GET
    @Path("/echo")
    public Response getEchoMsg(@QueryParam("message") String msg) {
        return Response.ok("you message was:  " + msg).build();
    }

    @GET
    @Path("/User")

    public Response getUser() {
//      Gson gson = new Gson();
        User user = new User(1, "Ahmad");
        return Response.status(Response.Status.OK).entity(user).type(MediaType.APPLICATION_JSON).build();
//      return gson.toJson(user);
    }

    @POST
    @Path("/CreateUser")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public void createUser(UserRequest requestBody) {
        System.out.println("create ran");
        System.out.println(requestBody.UserName);

    }

}

正如您在用户端点中看到的那样,我使用GSON将用户对象转换为json字符串,并且可以正常工作,但是我在线阅读了如果我通过返回一个实体(称为POJO)来实现该功能,那么如果没有它,它应该可以工作? / p>

但这只是给我一个空的{}

此外,在端点CreateUser中,我将其设置为使用json,并为其提供了一个具有我定义的类的请求正文。但是当我尝试打印用户名时,它为我提供了null,并且创建运行系统输出显示该函数已运行。

这是我的用户类

package ab.service;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class User {
    private int id;
    private String name;

    public User() {
    }

    public User(int id, String name) {
        super();
        this.id = id;
        this.name = name;
    }

    String getName() {
        return name;
    }

    void setName(String name) {
        this.name = name;
    }

    int getId() {
        return id;
    }

    void setId(int id) {
        this.id = id;
    }
}

和我的userrequest类

package ab.service;

import javax.xml.bind.annotation.XmlRootElement;

import jakarta.xml.bind.annotation.XmlElement;

@XmlRootElement
public class UserRequest {

    @XmlElement
    String UserName;
    @XmlElement
    int Id;
}

0 个答案:

没有答案
相关问题