api - Rest api开发:出现错误:找不到媒体类型=应用程序/xml的MessageBodyWriter
问题描述
我是开发 REST api 的新手,并试图创建一个小的虚拟 REST API。我正在使用 8.5.X 版的 tomcat。Eclipse 版本:2019-12 (4.14.0)。下面是我的代码。 消息资源.java:
package org.vaibhavc.practice.microservice.messanger.resources;
import java.util.List;
import org.vaibhavc.practice.microservice.messanger.model.Message;
import org.vaibhavc.practice.microservice.messanger.service.MessageService;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.GenericEntity;
@Path("/messages")
public class MessageResource {
MessageService messageService = new MessageService();
@GET
@Produces(MediaType.APPLICATION_XML)
public Response getMessage() {
List<Message> newMessage = messageService.getAllMessages();
GenericEntity<List<Message>> list = new GenericEntity<List<Message>>(newMessage) {};
return Response.ok(list).build();
}
}
消息.java
package org.vaibhavc.practice.microservice.messanger.model;
import java.util.Date;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Message {
private long id;
private String message;
private Date created;
private String author;
public Message(){
}
public Message(long id, String message, String author) {
this.id = id;
this.message = message;
this.created = new Date();
this.author = author;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
消息服务.java
package org.vaibhavc.practice.microservice.messanger.service;
import java.util.ArrayList;
import java.util.List;
import org.vaibhavc.practice.microservice.messanger.model.Message;
public class MessageService {
public List<Message> getAllMessages(){
Message m1 = new Message(1L,"Hello world!","Vaibhav");
Message m2 = new Message(2L,"Hello jersery!","Vaibhav");
List<Message> list = new ArrayList<>();
list.add(m1);
list.add(m2);
return list;
}
}
代码构建和编译成功。当我尝试访问 url“ http://localhost:8080/messanger/webapi/messages ”时,我收到如下错误: 严重:找不到媒体类型 = 应用程序 / xml 的 MessageBodyWriter,类型 = 类 java.util.ArrayList, genericType=java.util.List。
知道我在这里缺少什么吗?
解决方案
请在您的类路径中添加 jersey-media-moxy 库并检查 Maven 代码片段
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
<version>2.31</version>
推荐阅读
- java - QueryBuilder 类型中的方法 andProperty(String) 已弃用 - Javers
- java - Netbeans 11“找不到模块”和“包不可见”错误徽章
- jquery - 使用来自服务器的不同数据重复 div 块
- java - 如何将 Java 对象转换为整数列表?
- javascript - 如何跨对象执行函数与使用 this 引用执行函数本身相同
- reporting - Splunk 中的动态报告
- c - 使用 gcc 版本 4.3.3 构建 OpenSSL 1.1.1c 的问题
- ecmascript-6 - How to solve minification issue with AEM 6.5 and ECMA Script 6/ javascript 6?
- r - Implement a routine that runs 3 times a for loop in R
- scrapy - 为什么scrapy fetch会导致bash语法错误?