**Acceptance Criteria:**
[ ] Define route for /search/page?q={search term}
[ ] Define route handler for page search
[ ] Request:
[ ] **Must support** HTTP GET
[ ] **Must support** //q// parameter
[ ] If no //q// parameter provided, error
[ ] Request //body// **must** be empty
[ ] Request headers:
[ ] **Must support** If-Modified-Since: only if the result set has changed since this date
[ ] **Must support** If-None-Match: only if the result set's etag is different from this
[ ] Response
[ ] Response **must return** JSON
[ ] Responses JSON must have structure:
```
{
"pages": [
{
"id": 12345,
"revision_id": 67890,
"title_key": "Talk:Main_Page",
"display_title": "Talk:Main Page",
"excerpt": "The <b>News</b> is the place to find important news..."
}
]
}
```
[ ] id **must contain** the page numeric ID.
[ ] revision_id **must contain** the numeric ID of the most recent revision.
[ ] title_key **must contain** the pdbk version of the title
[ ] display_title **must contain** the version of the title most suited for display, with spaces instead of underscores
[ ] excerpt **must contain** the search excerpt HTML of the page
[ ] Response headers **must contain**:
[ ] Last-Modified: last time this result set was modified
[ ] ETag: etag for this result set