# 搜索

> 店铺前台搜索的 Ajax API 接口：按关键词查询商品，用于在访客输入过程中展示预测搜索结果。

Search API 可用于展示搜索查询的预测搜索结果。

所有 Ajax API 请求应使用[多语言 URL](/zh-CN/docs/theme/references/ajax-api/#locale-aware-urls)，以便为访客提供一致的体验。

## 按关键词搜索商品

```text
GET /{locale}/api/search
```

以下示例请求特定关键词的预测商品：

```curl
GET /{locale}/api/search?keyword={query}&page={page}&limit={limit}
```

### 请求示例

**Example request using Fetch**

```javascript
fetch(window.SHOPLAZZA.routes.root + '/api/search?keyword=hu&page=0&limit=4')
  .then((response) => response.json())
  .then((data) => {
    // do something...
  });
```

### 请求参数

- `keyword` string

  搜索查询词。
- `page` number

  结果的基于 0 的页码。
- `limit` number

  限制结果数量。

### 响应

**数据结构 | 示例**

- `data` object

  响应数据主体。

  - `cache_seconds` number

    结果可缓存的秒数。
  - `filters` undefined[]

    结果可用的筛选项。
  - `has_more` number

    是否还有更多记录。
  - `keyword` string

    本次查询使用的搜索词。
  - `limit` number

    每页最多返回的记录数。
  - `page` number

    当前页码。
  - `products` undefined[]

    商品列表。
  - `scm` string
  - `sort` undefined[]
  - `sorts` undefined[]

    结果可用的排序方式。
  - `ssp` string
  - `total` number

    匹配到的商品总数。
- `msg` string

  响应返回的结果说明。
- `state` number

  请求结果标识，`success` 或 `0` 表示请求成功。

```json
{
  "data": {
    "cache_seconds": 86400,
    "filters": [],
    "has_more": 0,
    "keyword": "hu",
    "limit": 4,
    "page": 1,
    "products": [],
    "scm": "search.v39.101.102.103.104",
    "sort": [],
    "sorts": [],
    "ssp": "",
    "total": 0
  },
  "msg": "请求成功",
  "state": 0
}
```
