Skip to content
由魔法生成的目录

M2.4

任务描述

多事的 bLue 发现,有的时候可能选手的信息更新了,但你的缓存还没更新,导致返回了旧数据。这让他很迷惑,于是他让你搞一个主动清除缓存的功能。

任务要求

你需要添加一个新的路由 POST /clearCache,接收 jsonx-www-form-urlencoded 格式的请求体(两种都要能处理)。请求参数中会包含要清除的缓存类型和 handle 列表。

当收到请求后,你需要将请求中指定的 handle 的缓存清除。如果 handles 字段不存在,则清空所有此类型缓存。

当清除缓存并再次访问数据获取接口时,你的程序应该会重新爬取数据并缓存。

请求数据结构

typescript
{
  cacheType: 'userInfo' | 'userRatings';
  handles?: string[];
}

响应格式

请求的 cacheType 合法

状态码:200。

响应内容类型:JSON。

响应体的数据结构定义为:

typescript
{
  message: 'ok';
}

请求参数有误(参数不符合请求体的数据结构定义)

状态码:400。

响应内容类型:JSON。

响应体的数据结构定义为:

typescript
{
  message: 'invalid request';
}

请求示例

示例 1

请求 URL(POST):

txt
http://127.0.0.1:2333/clearCache

部分请求头:

http
Content-Type: application/x-www-form-urlencoded

请求体:

txt
cacheType=userInfo&handles%5B0%5D=jiangly&handles%5B1%5D=zxw

状态码:200。

响应体:

json
{
  "message": "ok"
}

TIP

对于 x-www-form-urlencoded 格式的请求体,你可以用下面任一方式来传入数组参数,大部分 Web 框架都支持解析数组:

handles=jiangly&handles=zxw
handles[]=jiangly&handles[]=zxw
handles[0]=jiangly&handles[1]=zxw

示例 2

请求 URL(POST):

txt
http://127.0.0.1:2333/clearCache

部分请求头:

http
Content-Type: application/json

请求体:

json
{
  "cacheType": "userRatings"
}

状态码:200。

响应体:

json
{
  "message": "ok"
}

TIP

这个例子表示清除所有的 userRatings 缓存

示例 3

请求 URL(POST):

txt
http://127.0.0.1:2333/clearCache

部分请求头:

http
Content-Type: application/json

请求体:

json
{
  "cacheType": "worldTreeData",
  "name": "bLue"
}

状态码:400。

响应体:

json
{
  "message": "invalid request"
}

建议完成用时

0.5 天。

总结回顾检查点

  1. 你知道哪些常见的请求体内容类型?

由三位创世大魔法使共同写成,作为世界树记忆被封存并藉由元素脉络传播至全宇宙。