gpt4 book ai didi

java - 其余非 CRUD 搜索

转载 作者:行者123 更新时间:2023-12-01 09:21:33 24 4
gpt4 key购买 nike

我在 REST WS 中执行 GET 操作时遇到问题。我们有一个带有多个过滤器的前端面板,用于搜索客户。该面板包含以下过滤器:

  • 客户 ID(客户属性)
  • 客户名称(客户属性)
  • 帐号(帐户属性)
  • 车牌(车辆属性(property))...

在域模型中,我们有 3 个实体:

  • 客户
  • 帐户(一个客户可以拥有 1 个或多个帐户)
  • 车辆(一个帐户可以拥有 1 辆或多辆车辆)

如何实现此搜索的 REST GET 操作?

GET ..../customers/?name={name}&accountNum={accountNumber}&licensePlate={licensePlate} ??????

我认为这是错误的,因为 accountNumber 和 licensePlate 不属于客户资源。我不需要在预期结果中使用这些属性。

我考虑创建像 customerFilter 这样的新资源,但如果我必须返回客户资源就没有意义。

有什么想法吗?

谢谢!

最佳答案

它不会假装是您问题的具体答案。但我认为它会澄清与 GET 方法相关的一些内容。

根据URI Specification - RFC 3986Http Specification - RFC 7230 ,从客户端向服务器发送数据有3种方式:通过查询、通过路径或通过消息正文

当您使用 GET 方法时,不建议使用 message-body,因为 GET 方法可以被缓存以提高性能,而这些缓存可能会忽略 message-body 或拒绝请求:

A payload within a GET request message has no defined semantics;sending a payload body on a GET request might cause some existingimplementations to reject the request.

因此,您现在可以选择查询路径。两者的 URL 格式如下:

http://example.com/{path1}/{path2}?query1=value1&query2=value2

它们之间有什么区别?根据RFC 3986 - PathRFC 3986 - Query :

The path component contains data, usually organized in hierarchicalform, that, along with data in the non-hierarchical query component(Section 3.4), serves to identify a resource within the scope of theURI's scheme and naming authority (if any).

The query component contains non-hierarchical data that, along withdata in the path component (Section 3.3), serves to identify aresource within the scope of the URI's scheme and naming authority(if any).

总而言之,你可以设计任何你想要的东西。您可以使用例如:

GET .../customers?name={name}&accountNum={accountNumber}&licensePlate={licensePlate}

GET .../customers/{customerId}/

获取.../customers?customerId=12345

关于java - 其余非 CRUD 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40138183/

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