# Discourses API get just the number of search results

**URL:** <https://meta.discourse.org/t/discourses-api-get-just-the-number-of-search-results/76548>\
**Category:** Development\
**Tags:** rest-api\
**Created:** [21.Декабрь.2017 10:18:45 UTC](https://meta.discourse.org/t/discourses-api-get-just-the-number-of-search-results/76548 "2017-12-21T10:18:45Z")\
**Posts on this page:** 1\
**Showing post:** 5

<div class="post-metadata">

**Author:** ![vsoch](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/vsoch/32/124967_2.png) [@vsoch](https://meta.discourse.org/u/vsoch)\
**Post date:** [30.Сентябрь.2019 16:27:27 UTC](https://meta.discourse.org/t/discourses-api-get-just-the-number-of-search-results/76548/5 "2019-09-30T16:27:27Z")

</div>

Спасибо, @sam! Я вижу (даже из GET-запроса), что это должно быть довольно интуитивно понятно: когда я хочу получить страницу 2, я добавляю дополнительный параметр page. Я также вижу, что «options» — это то, что я могу определить с помощью функции discourse\_api:

```ruby
# frozen_string_literal: true
module DiscourseApi
  module API
    module Search
      # Возвращает результаты поиска, соответствующие указанному термину.
      #
      # @param term [String] поисковый термин
      # @param options [Hash] набор настраиваемых опций
      # @option options [String] :type_filter Возвращает результаты указанного типа.
      # @return [Array] Возвращает результаты в виде массива хешей.
      def search(term, options = {})
        raise ArgumentError.new("#{term} требуется, но не указан") unless term
        raise ArgumentError.new("#{term} требуется, но не указан") unless !term.empty?

        response = get('/search/query', options.merge(term: term))
        response[:body]
      end
    end
  end
end

```

Итак, попробуем это применить: я ожидаю получить разные результаты для страницы 1 и страницы 2. Или давайте сделаем чуть больше разделения и возьмём страницы 1 и 3. Запрос касается всех тем Q&A:

```ruby
 query = category["name"] + " #" + category["slug"]
=> "Q&A #q-a"

```

Теперь получим страницы 1 и 3 с помощью клиента discourse\_api:

```ruby
topics1 = client.search(query, options={"page": "1"})
topics3 = client.search(query, options={"page": "3"})

```

Я могу посмотреть на первую тему в каждом случае:

```ruby
=> {"id"=>220, "title"=>"Why am I exceeding the quota?", "fancy_title"=>"Why am I exceeding the quota?", "slug"=>"why-am-i-exceeding-the-quota", "posts_count"=>3, "reply_count"=>0, "highest_post_number"=>3, "image_url"=>nil, "created_at"=>"2018-06-01T12:56:12.120Z", "last_posted_at"=>"2018-06-15T16:41:44.736Z", "bumped"=>true, "bumped_at"=>"2018-06-15T16:41:44.736Z", "unseen"=>false, "pinned"=>false, "unpinned"=>nil, "visible"=>true, "closed"=>false, "archived"=>false, "bookmarked"=>nil, "liked"=>nil, "tags"=>["storage", "quota"], "category_id"=>26, "has_accepted_answer"=>false}

irb(main):148:0> topics3['topics'][0]
=> {"id"=>220, "title"=>"Why am I exceeding the quota?", "fancy_title"=>"Why am I exceeding the quota?", "slug"=>"why-am-i-exceeding-the-quota", "posts_count"=>3, "reply_count"=>0, "highest_post_number"=>3, "image_url"=>nil, "created_at"=>"2018-06-01T12:56:12.120Z", "last_posted_at"=>"2018-06-15T16:41:44.736Z", "bumped"=>true, "bumped_at"=>"2018-06-15T16:41:44.736Z", "unseen"=>false, "pinned"=>false, "unpinned"=>nil, "visible"=>true, "closed"=>false, "archived"=>false, "bookmarked"=>nil, "liked"=>nil, "tags"=>["storage", "quota"], "category_id"=>26, "has_accepted_answer"=>false}

```

Они абсолютно одинаковы, что, как мне кажется, означает, что переменная page не работает? Когда я проверяю это в инструментах разработчика Chrome, событие срабатывает при прокрутке вниз (поскольку посты автоматически загружаются в окне), и я могу подтвердить, что page=2 — это правильный параметр:

```plaintext
Request URL: https://ask.cyberinfrastructure.org/search?q=Q%26A%20%23q-a&page=2
Request Method: GET
Status Code: 200 (from ServiceWorker)
Referrer Policy: strict-origin-when-cross-origin

```

Или ещё лучше, просто посмотрите на список параметров:

```plaintext
Query String Parameters
q: Q&A #q-a
page: 2

```

Это не отправка формы, поэтому я не вижу никаких «Form Data», как в примере.

---

_[View the full topic](https://meta.discourse.org/t/discourses-api-get-just-the-number-of-search-results/76548)._
