URI查询中的布尔值?

时间:2011-06-23 23:08:43

标签: http url uri

在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的查询组件部分,但没有指定如何表达布尔参数。所以我想知道的是通常(或合理)的方法是什么?

4 个答案:

答案 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)

该函数返回一个对象,其中包含所有已解析的查询参数并默认回退到原始值。