作者:miedao1592_460 | 来源:互联网 | 2023-05-25 10:11
我正在考虑使用Stormpath将它的Java API作为用户存储.
看起来不错,除了我无法搜索用户.
例如,我收到此错误:
Exception in thread "main" com.stormpath.sdk.resource.ResourceException: HTTP 400, Stormpath 2105 (http://docs.stormpath.com/errors/2105): Account ID is not a supported query property.
当我执行此查询时:
HashMap queryParams = Maps.newHashMap();
queryParams.put("ID", "4mPXXXXXXXXXX");
searchResult = application.getAccounts(queryParams);
然而,通过电子邮件搜索用户是有效的.当我尝试通过存储在customData属性中的登录令牌搜索用户时,我收到相同的错误.
看起来我想做的事情是不可能的,因为看起来你可以查询的唯一属性是电子邮件和用户名.但是,如果它不起作用,他们为什么会提供此功能.我错过了什么?
1> Les Hazlewoo..:
常见的关系数据库行为与REST API中的行为之间存在阻抗不匹配.通过id查询虽然在关系数据库中很常见,但它并不是REST API(或大多数基于HTTP的网站)的惯用行为.URL(href)是指向Web上资源的规范"指针".换句话说,在REST API中,规范标识符是 href.href中的任何标记(任何内部"id",特殊字符,等等)对REST客户端应该是不透明的,并且完全被客户端忽略.URL在HTTP和REST中是最重要的.
在这种情况下,Stormpath SDK会尝试忠实于RESTful最佳实践,因此您可以使用该client.getResource
方法获取任何Stormpath资源,该方法接受href以及您希望href表示的对象类型:
String href = "https://api.stormpath.com/v1/accounts/" + id;
Account account = client.getResource(href, Account.class);
也就是说,希望在客户端API中更方便地表示它是没有错的,例如,client.getAccount(String id)
如果你想保留ID的概念.如果是这样,请打开一个新的功能请求,我们将非常乐意考虑它.
至于可查询Account
属性,这里记录了这些属性.Stormpath也将很快使自定义数据中的数据也可搜索.虽然Stormpath功能时间表从未公布,但它是公司最高的工程优先级,应该很快就会推出.
对某些人有用的一种解决方法是将他们想要搜索的数据存储在您未在应用程序中使用的帐户字段中.例如,您可以使用"中间名称"字段来存储喜欢的颜色.在自定义数据搜索可用之前,这只是暂时的.HTH!