我正在使用以下代码来获取所有用户。它可与Java客户端一起使用,但会出现以下错误
{ code: '[invalid]', api_1 | message: 'You must specify either the [ids], [queryString], [email] or [username] property for a GET request.' }
我正在尝试
let requestJSON = {}
requestJSON.queryString = "*";
client.searchUsersByQueryString(requestJSON).then(handleResponse).catch(handleResponse);
function handleResponse (clientResponse) {
console.log(clientResponse.errorResponse.generalErrors[0]);
}
也由于某种原因,它假定这是一个GET请求。
我已经尝试使用Postman进行相同的操作,但是它不起作用。我到处都在使用FusionAuth 1.5.0。
答案 0 :(得分:1)
客户端库使用带有JSON正文的POST
请求来执行搜索。在https://fusionauth.io/docs/v1/tech/apis/users#search-for-users
POST /api/user/search
API文档。
尝试以下方法:
let requestJSON = {
search: {
queryString: "*"
}
};
client.searchUsersByQueryString(requestJSON).then(handleResponse).catch(handleResponse);
function handleResponse (clientResponse) {
console.log(clientResponse.errorResponse.generalErrors[0]);
}
答案 1 :(得分:1)
就像@robotdan所说的那样,您必须在queryString
属性内包括search
字段。尽管乍看之下可能并不明确,但您可以通过查看请求正文字段来暗示这一点:
Fusion Auth User API screenshot
如第三行所示,在search.queryString
处应定义要搜索的字符串,在您的情况下为所有字符串(*
)。另外,如果您想要一个有序列表,请查看包含可用排序字段的第六行,并在第七行中查看结果的顺序:asc
或desc
(它不会出现在屏幕截图中)因此,请访问FusionAuth官方文档页面。
想象一下,您希望所有名称在其foo
的任何位置都必须包含fullName
的用户,由用户email
降序排列。您的对象应该是这样的:
const request = {
search: {
queryString: '*foo*',
sortFields: [{ name: 'email', order: 'desc' }]
}
}
在开头和结尾都注意*
:这些星号告诉搜索引擎foo
可能有前缀和/或后缀(但您并不在乎它们)。