gpt4 book ai didi

java - 休息问题 使用rest easy的服务

转载 作者:行者123 更新时间:2023-11-30 07:02:43 25 4
gpt4 key购买 nike

我有一个像下面这样的复杂对象

public class TestFilter {

public TestFilter(){

}

private Set<String> m_categories;

private Set<String> m_taskNames;

public Set<String> getCategories() {
return m_categories;
}

public void setCategories(Set<String> categories) {
this.m_categories = categories;
}

public Set<String> getTaskNames() {
return m_taskNames;
}

public void setTaskNames(Set<String> taskNames) {
this.m_taskNames = taskNames;
}


public static TestFilter fromString(String jsonRepresentation){
ObjectMapper mapper = new ObjectMapper();
TestFilter filter= null;
try {
filter = mapper.readValue(jsonRepresentation, TestFilter.class );
} catch (IOException e) {
throw new MyException("Exception while parsing the TestFilter");
}
return filter;
}
}

我在休息服务中使用它,如下所示

@GET
@Path("/schedule/info")
public Response getScheduledTasks(@QueryParam(FILTERS)TestFilter testFilter){
if(testFilter == null){
System.out.println("its null");
} else {
System.out.println("not null");
}
return Response.status(Status.OK).entity("Success").build();
}

我用于访问该对象的 URL 如下所示。该 URL 已解码以便于阅读。

<强> https://myip:port/my-context/rest/schedule/info?filters= "{"categories":["C","D"],"taskName":["TaskA"]}"

我在服务上放置了一个调试点,因此它命中了服务,但问题是 testFilter 始终为 null。

请让我知道代码有什么问题。

最佳答案

包裹在 " 中的 JSON 只是一个 JSON 字符串。JSON 对象不应该有引号。所以只需从引号中解开 JSON

filters={"categories":["C","D"],"taskNames":["TaskA"]}

另一件事,根据您的评论。如果你想避免 404 NotFound,如果你想将其更改为其他内容,例如 400 Bad Request,那么只需抛出它即可

throw new BadRequestException()
// or new WebApplicationException(400)

令我感到奇怪的是,错误的查询参数会导致 404,但这是 JAX-RS 的指定行为。就我个人而言,在这种情况下我只是将其更改为 400。

关于java - 休息问题 使用rest easy的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40624855/

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