我正在使用查询参数,并被介绍到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)
我无法重写包含两个参数,但最后一个参数是可选的,例如:
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.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.但是如果我包含第二个参数的页码,那么基本上第二个参数应该是可选的.
这是对其他人过滤/查询汽车列表的问题的后续行动.有一个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,但这似乎是一种沉重而专有的方法.别人怎么解决这个问题?
在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) 从功能性 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 查询参数在 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 地址填充,所以即使我给它传递一个值,它也会显示我所处的状态。我怎样才能让它始终反映查询参数的值?
以下生成错误:"未定义的局部变量或方法`params'"
assert_equal params[:recipient_id], users(:one).id
你如何测试params哈希?
另外,assert_redirect如果存在params,你如何测试?params附加到URL,因此测试model_path或类似失败.
在Rails 3中使用内置测试类.
我一直在编写一个从网络搜索中提取数据的程序.为了获得更多数据,我希望通过脚本为每个查询提取更多结果(比方说100左右).
我的问题是,有没有办法修改Google,Yahoo或Bing的URL(按此顺序排列),这样每个查询可以获得10个以上的结果?
对于谷歌来说,追加&num=99曾经在某一点上工作但不再有效:(我看到了类似的追加,&count=50但在任何一个搜索引擎上也没有用.
我有一个受JWT和Authorize属性保护的api,在客户端,我使用jquery ajax调用来处理它。
这可以正常工作,但是我现在需要能够安全地下载文件,因此无法设置标头Bearer值,可以在URI中将其作为url参数吗?
=-=-=-=-
更新:这是我最终为自己的方案所做的事情,这是一个内部项目,数量很少,但是安全性很重要,将来可能需要扩展:
当用户登录时,我生成一个随机的下载密钥,并将其与JWT的到期日期一起放入数据库的用户记录中,然后将下载密钥返回给客户端。如果有一个具有下载密钥的查询参数,并且该密钥存在于用户记录中并且尚未过期,则下载路径受保护仅允许下载。这样,dl密钥对每个用户都是唯一的,只要用户的auth会话有效且可以轻松吊销,该密钥就有效。
我想过滤一些数据库结果,对于给定的 url 带有一些日期参数(像这样url.com?start=2018-12-12)。读取参数的正常方法是使用request.args.get,访问底层的值ImmutableMultiDict,这为我提供了可选参数default和type。
我现在的第一次尝试是这样的:
@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给我默认值?
url-parameters ×10
url ×2
.htaccess ×1
asp.net-core ×1
assert ×1
base64 ×1
datetime ×1
decode ×1
flask ×1
javascript ×1
jwt ×1
mod-rewrite ×1
node.js ×1
python ×1
react-router ×1
reactjs ×1
rest ×1
shopify ×1
shopify-api ×1
testing ×1
typescript ×1
uri ×1