如何使用 RestFull web 服务在 java 中响应打印请求的属性?

我一直在关注 RestFull webservices 的教程,但我无法理解某些概念。这是我的 PersonServiceImpl 类。


    @Path("/person")

    @Consumes(MediaType.APPLICATION_JSON)

    @Produces(MediaType.APPLICATION_JSON)

    public class PersonServiceImpl implements PersonService{


    private static Map<Integer,Person> person = new HashMap<Integer,Person>();



    @Override

    @Path("/add")

    @POST

    public Response addPerson(Person p) {

        Response response = new Response();


        if(person.get(p.getId())!=null) {

            response.setStatus(false);

            response.setMessage("Person already exists");

        }

            person.put(p.getId(),p);

            response.setStatus(true);

            response.setMessage("Person added sucessfully ");

            return response;

    }


    @Override

    public Response deletePerson(int id) {

        // TODO Auto-generated method stub

        return null;

    }


    @Override

    public Person getPerson(int id) {

        // TODO Auto-generated method stub

        return null;

    }


    @Override

    public Person[] getAllPerson() {

        // TODO Auto-generated method stub

        return null;

    }

   }

我对代码进行了一些更改以生成和使用 json 文件。这是我的个人课程


@XmlRootElement(name = "person")

public class Person {

    private String name;

    private int age;

    private int id;



    public String getName() {

        return name;

    }


    public void setName(String name) {

        this.name = name;

    }


    public int getAge() {

        return age;

    }


    public void setAge(int age) {

        this.age = age;

    }


    public int getId() {

        return id;

    }


    public void setId(int id) {

        this.id = id;

    }



}

这是我的响应类


@XmlRootElement

public class Response {


    private boolean status;

    private String message;

    public boolean isStatus() {

        return status;

    }


    public void setStatus(boolean status) {

        this.status = status;

    }

}

我想知道 :

  1. 如何在响应中打印 person 类的值?

  2. json 值如何映射到 java 属性以及在哪里?3.如果我在 json 请求中输入一个额外的值,该值会发生什么变化?

教程链接:https://www.journaldev.com/9170/restful-web-services-tutorial-java


潇湘沐
浏览 72回答 1
1回答

饮歌长啸

首先,实现自己的Response类不是一个好主意。该类javax.ws.rs.core.Response存在并且应该用于 JAX-RS 方法的一般响应。关于 1:如果“打印”是指返回实例的 JSON 表示形式Person,只需执行以下操作:&nbsp; &nbsp; @Override&nbsp; &nbsp; public Person getPerson(int id) {&nbsp; &nbsp; &nbsp; &nbsp; Person personForId = person.get(id);&nbsp; &nbsp; &nbsp; &nbsp; if (personForId == null) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; thrown new NotFoundException();&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; return personForId;&nbsp; &nbsp; }该Person实例将自动序列化为 JSON 表示形式。关于 2:由于Person遵循 Java Bean 的 getter 和 setter 约定,JSON 元素将按名称映射到 bean 属性。这个JSON{&nbsp; "status": true,&nbsp; "message": "some message"}将映射到Person带有status = true和的实例message = "some message"。您可以在类、其字段或 getter 或 setter 上使用大量注释来调整此行为。关于 3:此行为取决于您使用的 JSON 序列化库。广泛使用的 Jackson 库提供了@JsonIgnoreProperties注解。为此,其他库可能有不同的注释。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java