标签: url-parameters

如何使用 URLSearchParams 删除空查询参数?

我正在使用查询参数,并被介绍到URLSearchParams. 我用它来形成这种要查询的对象,

const x = {
  a: 'hello World'
  b: 23
  c: ''
}
let params = new URLSearchParams(x);
console.log(params.toString()) // a=hello+World&b=23&c=
Run Code Online (Sandbox Code Playgroud)

在这里,我不想拥有那个c=,因为它很丑,而且我的 API 不需要那个。

所以,我想要这个结果a=hello+World&b=23(没有空的查询字符串)但是,我在 mdn 文档上找不到任何东西。

我该怎么做?

这样做不起作用,因为它似乎直接改变了params影响forEach

const x = {
  a: 'hello World',
  b: '',
  c: ''
};

let params = new URLSearchParams(x);
params.forEach((v, k) => { // never reaches `c`
  console.log(k, ' => ', v)
  if (v == '')
    params.delete(k);
});
console.log(params.toString());
Run Code Online (Sandbox Code Playgroud)

javascript url url-parameters node.js

11
推荐指数
2
解决办法
4469
查看次数

RewriteRule - 两个参数但最后一个参数是可选的

我无法重写包含两个参数,但最后一个参数是可选的,例如:

http://www.mywebsite.com/friends/jamie - (正斜杠也应该是可选的).哪个应该与此相同:

http://www.mywebsite.com/friends.php?name=jamie
Run Code Online (Sandbox Code Playgroud)

包含第二个参数时

http://www.mywebsite.com/friends/jamie/30 - 应该与此相同:

http://www.mywebsite.com/friends.php?name=jamie&page=30
Run Code Online (Sandbox Code Playgroud)

此规则不起作用:

RewriteRule ^friends/(.*)/(.*)$ friends.php?name=$1&page=$2
Run Code Online (Sandbox Code Playgroud)

因为我得到了这个:The requested URL /friends/jamie was not found on this server.但是如果我包含第二个参数的页码,那么基本上第二个参数应该是可选的.

.htaccess mod-rewrite url-parameters

9
推荐指数
1
解决办法
1万
查看次数

RESTful过滤和查询中的布尔逻辑

这是对其他人过滤/查询汽车列表的问题的后续行动.有一个RESTful过滤请求的建议是将过滤器表达式放在URI的查询中,如下所示:

/cars?color=blue&type=sedan&doors=4
Run Code Online (Sandbox Code Playgroud)

没关系.但是如果我的过滤查询变得更复杂并且我需要使用布尔运算符,例如:

((color=blue OR type=sedan) AND doors=4) OR color=red
Run Code Online (Sandbox Code Playgroud)

也就是说,我想找一辆四门蓝色轿车或一辆四门轿车,但如果这辆车是红色的,我会毫不关心任何其他房产.

是否有任何类型的约定在RESTful URI的查询参数中提供布尔表达式?我想我可以通过创建一些新的查询表达式语言并将其放入一个POST,但这似乎是一种沉重而专有的方法.别人怎么解决这个问题?

rest uri boolean-expression url-parameters

9
推荐指数
2
解决办法
5499
查看次数

如何解码/重新创建 Google Flights 搜索网址?

问题

Google Flights上,搜索信息被编码在 URL 参数中,大概是为了让用户可以轻松地彼此共享航班搜索。URL 格式如下所示:

https://www.google.com/travel/flights/search?tfs=CBwQAhoeagcIARIDSE5MEgoyMDIxLTA5LTEzcgcIARIDU0ZPGh5qBwgBEgNTRk8SCjIwMjEtMDktMTdyBwgBEgNITkxwAYIBCwj___________8BQAFIAZgBAQ
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写一个程序,可以根据航班信息(出发地、目的地、航班日期、乘客等)生成航班搜索 URL。为此,我需要知道信息是如何在 URL 中编码的,以便我可以重新创建它。

我尝试过的

我知道航班信息是用 base64 或其某些变体编码的(我一直在使用base64decode.org进行测试)。对于 2021 年 9 月 13 日至 2021 年 9 月 17 日从 HNL-SFO 出发的往返航班,Google Flights 的网址如下:

https://www.google.com/travel/flights/search?tfs=CBwQAhoeagcIARIDSE5MEgoyMDIxLTA5LTEzcgcIARIDU0ZPGh5qBwgBEgNTRk8SCjIwMjEtMDktMTdyBwgBEgNITkxwAYIBCwj___________8BQAFIAZgBAQ
Run Code Online (Sandbox Code Playgroud)

tfs查询参数中下划线之前的部分解码为

jHNL
2021-09-13rSFOjSFO
2021-09-17rHNLp
Run Code Online (Sandbox Code Playgroud)

其中包含一些(但不是全部)可识别的航班信息。我不明白的是可识别信息之间的空白。使用这个网站,我了解到空白是字符的混合:

U+0008 : <control> BACKSPACE [BS]
U+001C : <control> INFORMATION SEPARATOR FOUR {file separator (FS)}
U+0010 : <control> DATA LINK ESCAPE [DLE]
U+0002 : <control> START OF TEXT [STX]
U+001A : <control> SUBSTITUTE [SUB]
U+001E : <control> …
Run Code Online (Sandbox Code Playgroud)

base64 decode url-parameters google-flights

9
推荐指数
1
解决办法
3879
查看次数

在功能组件中反应 URI 参数

从功能性 React 组件读取 URI 参数的正确方法是什么?

在 JavaScript 中,如果组件是 a 的直接子组件Switch,我们可以这样做:

function MyComponent(props) {
    const query = props.location.search;
    // ...
}
Run Code Online (Sandbox Code Playgroud)

如果组件不是 a 的直接子Switch级,我们可以使用一个类:

class MyComponent extends Component<RouteComponentProps> {
    render() {
        const query = this.props.location.search;
        // ...
    }
}

export default withRouter(MyComponent);
Run Code Online (Sandbox Code Playgroud)

严格的 TypeScript 中的功能组件怎么样?

我们希望location属性(以及任何其他属性,如果有更多)可用并由 some interfaceor预定义type,但由 React 提供,而不是组件的用户。一个丑陋的黑客是自己定义接口,然后期望它实际上是那样的。

url url-parameters typescript reactjs react-router

8
推荐指数
4
解决办法
2万
查看次数

Shopify - 根据查询参数预填充帐单地址

我正在尝试通过 URL 查询参数在 Shopify 结账中预填充送货/账单地址。我发现使用此处引用的送货地址很容易做到这一点:

https://community.shopify.com/c/Shopify-APIs-SDKs/Autofill-checkout-fields/td-p/318793

但是,当我尝试对帐单信息执行相同操作时,付款屏幕上始终选择“与送货地址相同”单选框,如果我手动选择不同地址的选项,则所有值都为空

如何预填充两个地址?我已经尝试将帐单查询参数直接添加到结帐付款页面 URL,但这也不起作用。这是我一直在尝试的网址:

demo-store.myshopify.com/checkout?checkout[email]=fake.name@gmail.com&checkout[shipping_address][first_name]=John&checkout[shipping_address][last_name]=Doe&checkout[shipping_address][address1]=333%20Fake%20St.&checkout[shipping_address][city]=San%20Diego&checkout[shipping_address][province]=CA&checkout[shipping_address][country]=USA&checkout[shipping_address][zip]=92116&checkout[shipping_address][phone]=333-333-3333&checkout[different_billing_address]=true&checkout[billing_address][first_name]=Jane&checkout[billing_address][last_name]=Doe&checkout[billing_address][address1]=444%20Fake%20St%20&checkout[billing_address][city]=San%20Diego&checkout[billing_address][province]=CA&checkout[billing_address][country]=USA&checkout[billing_address][zip]=92121&checkout[billing_address][phone]=444-444-4444
Run Code Online (Sandbox Code Playgroud)

另外,额外的问题,运输状态似乎总是根据 IP 地址填充,所以即使我给它传递一个值,它也会显示我所处的状态。我怎样才能让它始终反映查询参数的值?

query-parameters url-parameters shopify shopify-api

8
推荐指数
1
解决办法
567
查看次数

如何在Rails测试中测试params哈希?

以下生成错误:"未定义的局部变量或方法`params'"

assert_equal params[:recipient_id], users(:one).id

你如何测试params哈希?

另外,assert_redirect如果存在params,你如何测试?params附加到URL,因此测试model_path或类似失败.

在Rails 3中使用内置测试类.

testing assert ruby-on-rails url-parameters ruby-on-rails-3

7
推荐指数
1
解决办法
5667
查看次数

通过URL获取每页搜索结果

我一直在编写一个从网络搜索中提取数据的程序.为了获得更多数据,我希望通过脚本为每个查询提取更多结果(比方说100左右).

我的问题是,有没有办法修改Google,Yahoo或Bing的URL(按此顺序排列),这样每个查询可以获得10个以上的结果?

对于谷歌来说,追加&num=99曾经在某一点上工作但不再有效:​​(我看到了类似的追加,&count=50但在任何一个搜索引擎上也没有用.

search-engine url-parameters

7
推荐指数
2
解决办法
1万
查看次数

asp.net核心JWT在uri查询参数?

我有一个受JWT和Authorize属性保护的api,在客户端,我使用jquery ajax调用来处理它。

这可以正常工作,但是我现在需要能够安全地下载文件,因此无法设置标头Bearer值,可以在URI中将其作为url参数吗?

=-=-=-=-

更新:这是我最终为自己的方案所做的事情,这是一个内部项目,数量很少,但是安全性很重要,将来可能需要扩展:

当用户登录时,我生成一个随机的下载密钥,并将其与JWT的到期日期一起放入数据库的用户记录中,然后将下载密钥返回给客户端。如果有一个具有下载密钥的查询参数,并且该密钥存在于用户记录中并且尚未过期,则下载路径受保护仅允许下载。这样,dl密钥对每个用户都是唯一的,只要用户的auth会话有效且可以轻松吊销,该密钥就有效。

url-parameters jwt asp.net-core-mvc asp.net-core

7
推荐指数
3
解决办法
3500
查看次数

将日期作为 URL 参数传递给烧瓶路由

我想过滤一些数据库结果,对于给定的 url 带有一些日期参数(像这样url.com?start=2018-12-12)。读取参数的正常方法是使用request.args.get,访问底层的值ImmutableMultiDict,这为我提供了可选参数defaulttype

我现在的第一次尝试是这样的:

@app.route()
def event():
   ektempo = request.args.get('start', default = datetime.date.today(), type = datetime.date)
   ...
Run Code Online (Sandbox Code Playgroud)

这适用于默认参数,但不适用于传递的日期字符串,因为datetime.date需要三个整数作为参数。通常我会得到我的日期对象datetime.datetime.strptime和一个格式字符串。有没有办法将日期时间字符串作为 url 参数传递给烧瓶并将它pythonicly 转换为datetime.date.

我喜欢这种工作方式request.args.get,但似乎无法datetime.date使用给定的 url 参数轻松从中获取对象。有没有另一种方法可以通过烧瓶内置方法来实现它,它验证参数并且没有参数或ValueError给我默认值?

python datetime url-parameters flask

7
推荐指数
2
解决办法
6936
查看次数