有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

azure active directory使用msgraphsdkjava实现组$filter查询

这是我目前所拥有的,但我似乎找不到。过滤器,是否以其他方式完成

        IGroupCollectionRequest request = graphServiceClient.groups().buildRequest();
        IGroupCollectionPage page = request.get();
        IGroupCollectionRequestBuilder builder = page.getNextPage();
        while (builder != null) {
            request = builder.buildRequest();
            page = request.get();
            builder = page.getNextPage();
        }

共 (1) 个答案

  1. # 1 楼答案

    您可以在第一次调用buildRequest()requestOptions参数中包含$filter(或任何其他查询参数):

    // Include any filters in the initial request's `requestOptions`
    List<Option> requestOptions = new ArrayList<Option>();
    requestOptions.add(new QueryOption("$filter", "startsWith(displayName,'Foo')"));
    
    IGroupCollectionRequest request = graphServiceClient.groups().buildRequest(requestOptions);
    IGroupCollectionPage page = request.get();
    // Process first page
    IGroupCollectionRequestBuilder builder = page.getNextPage();
    while (builder != null) {
        request = builder.buildRequest();
        page = request.get();
        // Process each subsequent page
        builder = page.getNextPage();
    }
    

    另一种构造请求的方法(为了获得相同的结果),我发现它更容易阅读:

    IGroupCollectionPage page;
    IGroupCollectionRequestBuilder builder;
    
    // Build the initial request (including any filters)
    List<Option> requestOptions = new ArrayList<Option>();
    requestOptions.add(new QueryOption("$filter", "startsWith(displayName,'Foo')"));
    IGroupCollectionRequest request = graphServiceClient.groups().buildRequest(requestOptions);
    
    do {
        // Make request
        page = request.get();
    
        // Process results
        for(Group g: page.getCurrentPage()) {
            System.out.println(g.displayName);
        }
    
        // Get and build request for next page
        builder = page.getNextPage();
        if (builder == null) {
            request = null;
        } else {
            request = builder.buildRequest();
        }
    } while (request != null);