【问题标题】:Spring REST URI: How to differentiate b/w user and adminSpring REST URI:如何区分黑白用户和管理员
【发布时间】:2017-08-08 08:42:42
【问题描述】:

我有点困惑,需要帮助来了解如何为用户定义我的 REST URI。

要求:我想实现如下目标:

  1. GET URI: /users/me/addresses: 此 API 将仅由客户端调用 (iOS)。用户详细信息将从身份验证令牌中获取,返回的对象将排除某些字段。
  2. GET URI: /users/{userId}/addresses:此 API 将由客服 WEB 门户调用,返回的对象将包含所有字段

为了实现这一点,我公开了两种方法,一种使用 URI '/users/me/addresses',另一种使用 '/users/{userId}/addresses'。然而,似乎 Spring 认为这两个 API 是相同的,并且不允许这样做。所以我正在寻找一种替代方法来实现我的目标。

【问题讨论】:

  • 听起来是个糟糕的解决方案。如果您的用户 ID 为“我”怎么办?考虑在标题中或在检查用户是否是客户服务代理的方法中传递 userId

标签: java spring rest spring-rest


【解决方案1】:

您可以使用正则表达式让 spring 将两个映射视为不同。见the documentation

@RequestMapping("/users/{userId:\\d+}/addresses")

【讨论】:

  • 感谢您的回复。不知道这将如何解决问题。 Spring 仍然会将这两个 API 视为相同
  • 不,不会。这就是重点。因为 /users/me/addresses 不再匹配 /users/{userId:\\d+}/addresses。不过它匹配/users/{userId}/addresses
猜你喜欢
  • 2013-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
  • 1970-01-01
  • 2020-05-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多