在 REST 端点中,我想接收过滤器作为查询参数。每个过滤器都定义在以逗号分隔的键值对中,如下所示:
www.example.com/things?filter=key:value,key2:value2,key3:value3
这个例子意味着我想要获取的事物列表必须包含keyas value、as和key2asvalue2 key3value3
在此端点中,我可以接收多个过滤器,如下所示:
www.example.com/things?filter=key:value&filter=key2:value2,key3:value3
这意味着事物列表必须具有keyasvalue 或( key2asvalue2和key3as value3)
在 spring-boot 中,接收多个同名查询参数的方法是在控制器中定义一个@RequestParam("filter") String[] filters. 但问题是:每当我只发送一个filter查询参数时,我都会得到一个由每个键对值形成的字符串数组。如果我发送多个filter,我将得到一个包含每个过滤器的数组(如预期)。
这意味着对于第一个示例,每个密钥对都会有一个大小为 3 的数组,而在第二个示例中,我会收到一个大小为 2 的数组。
我需要的是,每当我只发送一个filter查询参数时,@RequestParam标签都会传递一个大小为 1 的数组,其中包含稍后要解析的整个字符串。有办法实现这一点吗?
我正在尝试通过 DRF 进行 GET API 调用。
我的网址如下所示: http://127.0.0.1: 8000/patha/pathb/pathc/pathd/cd7701b?name=IT&size=20&workflow=rv
但它产生了一个错误:
if response.get('X-Frame-Options') is not None:
AttributeError: 'NoneType' object has no attribute 'get'
Run Code Online (Sandbox Code Playgroud)
但是当我只是发送两个查询参数时:
http://127.0.0.1:8000/patha/pathb/pathc/pathd/cd007b?name=IT&size=20
Run Code Online (Sandbox Code Playgroud)
或者,这三个参数中的两个参数的任意组合将到达视图方法。
我的视图方法如下所示:
class MyRtList(generics.ListAPIView, customMixin):
...
# Here I'd like to use all three inputs:
# cd007b
# `name` and `size`
Run Code Online (Sandbox Code Playgroud)
和 urls.py:
url(r'patha/pathb/pathc/(?P<name>[^/]+)?$',views.MyRtList.as_view()),
Run Code Online (Sandbox Code Playgroud)
我正在经历医生。使用 param1 和 param2 显示的示例。最多可以使用两个查询参数吗?是否禁止使用像 cd007b 和查询参数这样的混合数据?因为它会被 3 个参数卡住,但不会被 2 个参数卡住。
哪里出了问题?
GraphQL 的主要目标是解决许多 REST API 面临的过度获取问题,它通过仅查询查询中提到的特定字段来实现这一点。
但在 REST API 中,如果我们使用fields参数,它也会做同样的事情。那么如果 REST 可以解决这样的过度获取问题,为什么还需要 GraphQL呢?
actix-web 文档中仅提供了如何接收唯一命名的查询参数的示例。
但是如何接收多个同名的查询参数呢?例如:
http://localhost:8088/test?id=1&id=2&id=3
Run Code Online (Sandbox Code Playgroud)
我必须如何更改以下代码才能接受多个 id 以及如何读取它们?
http://localhost:8088/test?id=1&id=2&id=3
Run Code Online (Sandbox Code Playgroud) 您可以使用 htaccess 过滤/检查 POST 方法/请求吗?例如,如果您想使用$_GEThtaccess 过滤变量以在模式匹配时进行重定向,则它将如下所示:
RewriteCond %{QUERY_STRING} <script> [NC]
RewriteRule .*$ /mylogPage.php? [L,R=301]
Run Code Online (Sandbox Code Playgroud)
你能对 $_POST 变量做类似的过滤吗?
我尝试了很多变体,包括尝试mod_security通过 htaccess 进行修改。我假设在 htaccess 中它与以下内容有关:
RewriteCond %{REQUEST_METHOD} POST.
Run Code Online (Sandbox Code Playgroud)
我努力了
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} <script> [NC]
RewriteRule .*$ /mylogPage.php? [L,R=301]
Run Code Online (Sandbox Code Playgroud)
但它只是重定向页面
如果这应该通过 mod_security 完成,那么可以通过 htaccess 编辑 mod 安全性吗?语法是什么样的?我尝试过但没有成功。
我正在使用 Next.js 应用程序中的查询参数过滤来自 API 的结果。我想使用useRouter()相同的键推送多个不同的过滤器,因此我的查询参数可能如下所示:
?page=1&skill=html&skill=css&skill=js
Run Code Online (Sandbox Code Playgroud)
我可以将每个参数传递给我的 API 请求。现在,当我尝试添加技能参数时,我正在使用router.push它,如下所示:
const router = useRouter();
const addFilter = (skill: string) => router.push({ query: { ...router.query, skill: skill.toLowerCase() } });
Run Code Online (Sandbox Code Playgroud)
但显然它会覆盖之前的技能,所以我只能在 URL 中获得其中一个技能。如何使用相同的键添加其他查询参数,最好使用useRouter()or next/router?
我尝试通过版本 6 中的 React router dom 文档以这种方式从 URL 获取查询参数
import * as React from "react";
import { useSearchParams } from "react-router-dom";
function App() {
let [searchParams, setSearchParams] = useSearchParams();
function handleSubmit(event) {
event.preventDefault();
let params = serializeFormQuery(event.target);
setSearchParams(params);
}
return (
<div>
<form onSubmit={handleSubmit}>{/* ... */}</form>
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
但它返回了我空对象
我尝试了其他方法
import React from "react";
import ReactDOM from "react-dom";
import { Link, useLocation, BrowserRouter as Router } from "react-router-dom";
function User({ name }) {
return <div>{name}</div>;
}
function useQuery() { …Run Code Online (Sandbox Code Playgroud) 我正在写一个方法,让我们说,给予1并hello应该返回http://something.com/?something=1&hello=en.
我可以很容易地将它们组合在一起,但ASP.NET 3.5为构建URI提供了哪些抽象功能?我喜欢这样的东西:
URI uri = new URI("~/Hello.aspx"); // E.g. ResolveUrl is used here
uri.QueryString.Set("something", "1");
uri.QueryString.Set("hello", "en");
return uri.ToString(); // /Hello.aspx?something=1&hello=en
Run Code Online (Sandbox Code Playgroud)
我发现这个Uri课程听起来非常相关,但我找不到任何能真正完成上述课程的课程.有任何想法吗?
(对于它的价值,参数的顺序对我来说无关紧要.)
在我的php页面中,我收到了一堆get参数.我包含的文件也可以读取这些吗?
我试图用javascript将一个文本编辑器的内容发布到一个asp.net页面(asp.net 4.0).我的asp.net页面将收到它并保存到db.I附加文本编辑器的内容在查询字符串中.当内容很大时,我收到以下异常
The length of the query string for this request exceeds the configured maxQueryStringLength value.
Run Code Online (Sandbox Code Playgroud)
它适用于小内容.但是当内容很大时,它会抛出一个错误
这是我的javascript代码
var content1 = $("#txtAdminLabelEdit"+id).val();
content = encodeURIComponent(content1);
var url = "handlers/adminhandler.aspx?mode=savecontent&page=home&lid=1&vid=2<xt=" + content;
$.post(url, function (data) {
if (data == "yes") {
//do something
}
});
Run Code Online (Sandbox Code Playgroud)