RxJS 有没有办法让 ajax 在不构建 url 的情况下获取带有参数的请求
RxJS Is there a way to make ajax get request with params without building url
我无法将参数传递给 ajax get 请求。
假设我必须将参数 {category: 'cat', type: 'type', searchKey: 'key' }
传递给 url /search
并且我有以下代码:
action$.ofType('QUERY')
.debounceTime(500)
.switchMap(action =>
ajax.get('/search', {//pass some parameters},)
.map(result => ({
type: 'FETCH_SUCCESS',
payload: result.response,
})),
由于我是 RxJs 的新手,请给我建议正确的方法。
虽然技术上允许为 GET
请求提供请求 body(以及相应的 Content-Type
header,如 application/x-www-form-urlencoded
),但几乎所有服务器假设 GET
不包含一个。相反,当需要 body 时,使用 POST
(创建文档)或 PUT
(更新文档)。
但是,如果您要求的只是常规的旧查询参数,那很正常,但是 RxJS 中没有 built-in 支持将 Object 转换为查询字符串--主要是因为没有关于 objects/arrays 应该序列化多复杂的官方规范,所以一旦你做的不仅仅是简单的键 -> 值,每个服务器都有显着差异。
相反,您只需将它们包含在 URL 中。我知道你说 "without building url" 但缺少规范意味着 RxJS 可能永远不会添加支持,因为它非常自以为是。您可以自己手动生成字符串或使用具有您喜欢的约定的 third-party 实用程序。
ajax.get(`/search?query=${query}&something=${something`)
// or using something like https://www.npmjs.com/package/query-string
ajax.get(`/search?${queryString.stringify(params)}`)
如果您有兴趣进一步了解查询参数的自以为是的性质,请考虑如何序列化 { foo: [{ bar: 1 }, { bar: 2 }] }
。有些人可能会说它应该是 ?foo[0][bar]=1&foo[1][bar]=2
,但我也看到了 ?foo[][bar]=1&foo[][bar]=2
、?foo[bar]=1&foo[bar]=2
和其他变体。处理重复项时,事情变得更加棘手。 ?foo=true&foo=false
foo
应该是真还是假? (这是一个意见嘿嘿)
我无法将参数传递给 ajax get 请求。
假设我必须将参数 {category: 'cat', type: 'type', searchKey: 'key' }
传递给 url /search
并且我有以下代码:
action$.ofType('QUERY')
.debounceTime(500)
.switchMap(action =>
ajax.get('/search', {//pass some parameters},)
.map(result => ({
type: 'FETCH_SUCCESS',
payload: result.response,
})),
由于我是 RxJs 的新手,请给我建议正确的方法。
虽然技术上允许为 GET
请求提供请求 body(以及相应的 Content-Type
header,如 application/x-www-form-urlencoded
),但几乎所有服务器假设 GET
不包含一个。相反,当需要 body 时,使用 POST
(创建文档)或 PUT
(更新文档)。
但是,如果您要求的只是常规的旧查询参数,那很正常,但是 RxJS 中没有 built-in 支持将 Object 转换为查询字符串--主要是因为没有关于 objects/arrays 应该序列化多复杂的官方规范,所以一旦你做的不仅仅是简单的键 -> 值,每个服务器都有显着差异。
相反,您只需将它们包含在 URL 中。我知道你说 "without building url" 但缺少规范意味着 RxJS 可能永远不会添加支持,因为它非常自以为是。您可以自己手动生成字符串或使用具有您喜欢的约定的 third-party 实用程序。
ajax.get(`/search?query=${query}&something=${something`)
// or using something like https://www.npmjs.com/package/query-string
ajax.get(`/search?${queryString.stringify(params)}`)
如果您有兴趣进一步了解查询参数的自以为是的性质,请考虑如何序列化 { foo: [{ bar: 1 }, { bar: 2 }] }
。有些人可能会说它应该是 ?foo[0][bar]=1&foo[1][bar]=2
,但我也看到了 ?foo[][bar]=1&foo[][bar]=2
、?foo[bar]=1&foo[bar]=2
和其他变体。处理重复项时,事情变得更加棘手。 ?foo=true&foo=false
foo
应该是真还是假? (这是一个意见嘿嘿)