gpt4 book ai didi

xml - 带有 Jersey 返回 xml 响应的 Spring Boot

转载 作者:数据小太阳 更新时间:2023-10-29 02:34:08 28 4
gpt4 key购买 nike

我正在使用 spring boot 和 jersey 开发网关 api(我使用过 spring-boot-starter-jersey)。我想返回 xml 和 json 响应,它似乎可以与 json 响应一起使用但是当对 xml 发出请求时我得到 404。这是服务的代码

package com.quickp.services;

import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;

import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.ResponseBody;

import com.quickp.unit;
import com.quickp.models.units;
import com.quickp.serviceclient.ApiClient;

@Path("api/units")
public class UnitsService{

private ApiClient client;

public UnitsService(ApiClient client){
this.client = client;
}

@GET
@Produces({MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_VALUE})
public @ResponseBody Units getUnits(
@QueryParam("search") final String search,
@QueryParam("page") @DefaultValue("1") final int page) {
return client.getUnits(search, page, 10);

}

}

pom.xml 具有以下内容:

<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.5.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-xml-provider</artifactId>
<version>2.5.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.woodstox</groupId>
<artifactId>woodstox-core-asl</artifactId>
<version>4.4.1</version>
</dependency>

Units.class 类似于:

@Data
@JacksonXmlRootElement(localName = "units")
public class Units {
private int found;
private int display;
private boolean hasMore;
@JsonProperty("unit")
@JacksonXmlElementWrapper(useWrapping = false)
List<Unit> list;
}

unit.class 是这样的:

@Data
@EqualsAndHashCode
@JacksonXmlRootElement(localName = "unit")
public class Unit {
private int id;
private String name;
private String unitType;
private String unitApp;
private String unitHomeApp;
}

(我正在使用 lambok,所以我不需要手动添加 getter 和 setter)。

感谢所有帮助我解决这个问题。

问候赛义德

最佳答案

默认的 XML 提供程序使用 JAXB,它需要在您的 POJOS 上使用 JAXB 注释。如果您想使用 Jackson XML 提供程序,那么您仍然需要注册它,这将覆盖 JAXB 提供程序。

public class JerseyConfig extends ResourceConfig {
public JerseyConfig() {
register(JacksonXMLProvider.class);
// use JacksonJaxbXMLProvider if you also want JAXB annotation support
}
}

404 而不是预期的 500 的原因与 this question 有关. This answer应该可以解决问题,因此您会得到预期的错误响应。

关于xml - 带有 Jersey 返回 xml 响应的 Spring Boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36388914/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com