在URI的查询部分中指定布尔值的首选方法是什么?普通查询字符串类似于
a=foo&b=bar
假设我有一个带有布尔值的参数“c”,我应该说明
a=foo&b=bar&c=1
或
a=foo&b=bar&c=True
或
a=foo&b=bar&c=true
我检查了RFC 2396的查询组件部分,但没有指定如何表达布尔参数。所以我想知道的是通常(或合理)的方法是什么?
答案 0 :(得分:15)
这完全取决于您阅读查询字符串的方式。你要求的所有这些都是有效的。
答案 1 :(得分:4)
在具有快速服务器的节点中,您可以添加类似express-query-boolean的布尔解析器中间件。
var boolParser = require('express-query-boolean');
// [...]
app.use(bodyParser.json());
app.use(boolParser());
没有
// ?a=true&b[c]=false
console.log(req.query);
// => { a: 'true', b: { c: 'false' } }
使用
// ?a=true&b[c]=false
console.log(req.query);
// => { a: true, b: { c: false } }
答案 2 :(得分:0)
或者您可以这样做
const queryBool = unwrapTextBoolean({{{A_WAY_TO_GET_THAT_TEXT_BOOLEAN}}})
if(queryBool===null) {return;}
if(queryBool){
/*true-based code*/
}else{
/*false-based code*/
}
function unwrapTextBoolean(tB){
if(tB === 'true') return true;
if(tb === 'false') return false;
return null;
}
答案 3 :(得分:0)
我使用自定义函数来管理它。
在此处查看浏览器兼容性:https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams
@api_view(['GET'])
def api(request):
q = Question.objects.all()
s = QuestionSerializer(q, many=True)
print(ChoiceSerializer())
return Response(s.data)
该函数返回一个对象,其中包含所有已解析的查询参数并默认回退到原始值。