首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缩短URL获取选项

缩短URL获取选项
EN

Stack Overflow用户
提问于 2017-05-21 19:36:22
回答 1查看 41关注 0票数 0

我有一个目录类型的应用程序,它有许多不同的筛选选项,允许用户限制结果,例如:

代码语言:javascript
复制
<input type="checkbox" name="filters[1][]" value="4" /> Filter 1-4<br />
<input type="checkbox" name="filters[1][]" value="5" /> Filter 1-5<br />
<input type="checkbox" name="filters[1][]" value="6" /> Filter 1-6<br />
<input type="checkbox" name="filters[1][]" value="7" /> Filter 1-7<br />
<input type="checkbox" name="filters[1][]" value="8" /> Filter 1-8<br />
<input type="checkbox" name="filters[1][]" value="9" /> Filter 1-9<br />

<input type="checkbox" name="filters[2][]" value="10" /> Filter 2-10<br />
<input type="checkbox" name="filters[2][]" value="11" /> Filter 2-11<br />
<input type="checkbox" name="filters[2][]" value="12" /> Filter 2-12<br />
<input type="checkbox" name="filters[2][]" value="13" /> Filter 2-13<br />

<input type="checkbox" name="filters[misc][]" value="1" /> Filter Misc-1<br />
<input type="checkbox" name="filters[misc][]" value="test" /> Filter Misc-test<br />
<input type="checkbox" name="filters[misc][]" value="2" /> Filter Misc-2<br />
<input type="checkbox" name="filters[misc][]" value="3" /> Filter Misc-3<br />
<input type="checkbox" name="filters[misc][]" value="4" /> Filter Misc-4<br />

<select name="select">
<option value="">All</option>
<option value="1">Filter Select-1</option>
<option value="2">Filter Select-2</option>
<option value="3">Filter Select-3</option>
</select>

有很多这样的选择,而且随着时间的推移,选择可能会变得更大。我想知道在将这些选项发送到url时是否有任何方法来压缩这些选项,这样我就不会有一个非常长和不可读的地址。

我唯一能想到的就是提前将所有可能的组合保存到数据库中,然后引用ID.但考虑到大量可能的组合,这可能是不现实的。还有更好的选择吗?

如果可能的话,我要找的是像example.com?filters=something_relatively_short_and_simple这样的东西

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-21 19:43:22

您可以创建代码,这将在DB表(或者缓存)中保存搜索参数列表(作为JSON),并返回一个令牌(基于用户的ID,然后是Queries表中新创建的条目的ID )。

然后,您可以通过调用http://who.cares/?token=0acb087454d65ca63来再现搜索查询。

这张桌子将是这样的:

代码语言:javascript
复制
CREATE TABLE Queries (
  `query_id`           SERIAL PRIMARY KEY,
  `account_id`         BIGINT UNSIGNED NULL DEFAULT NULL,
  `token`              CHAR(32) NOT NULL ,
  `created_on`         INT(11) NOT NULL,
  `used_on`            INT(11) NULL DEFAULT NULL,

  `parameters`         TEXT,

  KEY (`account_id`),
  UNIQUE KEY (`token`),
  KEY (`used_on`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

更新:

如果这些查询来自公共站点(而不是我假设的一些后端CMS/CRM ),那么最好移除account_id部件,而是从用户查询参数的JSON中生成hash

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44101016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档