gpt4 book ai didi

resteasy - 使用 RESTful URL 传递不定查询参数并在 RESTEasy 中读取它们

转载 作者:行者123 更新时间:2023-12-02 22:03:27 26 4
gpt4 key购买 nike

我需要使用 RESTEasy 设计 RESTful 服务。客户端可以使用任意数量的查询参数来调用此公共(public)服务。我的 REST 代码应该能够以某种方式读取这些查询参数。例如,如果我有图书搜索服务,客户可以进行以下调用。

http://domain.com/context/rest/books/searchBook?bookName=someBookName
http://domain.com/context/rest/books/searchBook?authorName=someAuthor& pubName=somePublisher
http://domain.com/context/rest/books/searchBook?isbn=213243
http://domain.com/context/rest/books/searchBook?authorName=someAuthor

我必须编写一个如下所示的服务类来处理这个问题。

@Path("/books")
public class BookRestService{

// this is what I currently have, I want to change this method to in-take all the
// dynamic parameters that can come
@GET
@Path("/searchBook")
public Response searchBook(@QueryParam("bookName") String bookName,@QueryParam("isbn") String isbn) {

// fetch all such params
// create a search array and pass to backend

}

@POST
@Path("/addBook")
public Response addBook(......) {
//....
}
}

抱歉格式错误(我无法理解代码格式化在这个编辑器中的工作原理!)。正如您所看到的,我需要更改 searchBook() 方法,以便它将采用任意数量的查询参数。

我在这里看到了类似的帖子,但找不到正确的解决方案。

How to design a RESTful URL for search with optional parameters?

有人可以解释一下吗?

最佳答案

在这种情况下,最好的办法是使用包含搜索条件的所有字段的 DTO。例如,您提到了 4 个不同的参数。

  1. 书名(bookName)
  2. 作者姓名(authorName)
  3. 发布商名称 (pubName)
  4. 国际标准书号 (isbn)

为要将参数映射到的每个属性创建一个包含具有以下注释的字段的 DTO:

public class CriteriaDTO{

@QueryParam("isbn")
private String isbn;
.
.

Other getter and setters of other properties

}

这里有一个方法供您引用:

@GET
@Produces("application/json")
@Path("/searchBooks")
public ResultDTO search(@Form CriteriaDTO dto){
}

使用以下 URL 将自动填充 CriteriaDTO 的属性 isbn:

your.server.ip:port/URL/Mapping/searchBooks?isbn=123456789&pubName=testing

关于resteasy - 使用 RESTful URL 传递不定查询参数并在 RESTEasy 中读取它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10735064/

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