在curl请求中传递布尔值

时间:2017-05-24 03:57:26

标签: json bash curl

我的目标是在我的isAdmin架构中有一个属性users,它是一个布尔值,默认为false,并且可以在CURL请求中发送一个真值。

我在我的架构中开始使用它:

isAdmin: {
    type: Boolean,
    default: false,
    required: true
  }

并且有一个正常的CURL请求,并且isAdmin按预期返回false。

API="http://localhost:4741"
URL_PATH="/sign-up"
EMAIL="a2@admin.com"
PASSWORD="test"


curl "${API}${URL_PATH}" \
  --include \
  --request POST \
  --header "Content-Type: application/json" \
  --data '{
    "credentials": {
      "email": "'"${EMAIL}"'",
      "password": "'"${PASSWORD}"'",
      "password_confirmation": "'"${PASSWORD}"'"
    }
  }'

然后我尝试取出默认值:

  isAdmin: {
    type: Boolean,
    required: true
  }

..并尝试在CURL请求中传递T或F并且它不起作用。该错误表示isAdmin是必需的。不确定我的CURL请求有什么问题。

API="http://localhost:4741"
URL_PATH="/sign-up"
EMAIL="a2@admin.com"
PASSWORD="test"
ADMIN="True"

curl "${API}${URL_PATH}" \
  --include \
  --request POST \
  --header "Content-Type: application/json" \
  --data '{
    "credentials": {
      "email": "'"${EMAIL}"'",
      "isAdmin": "'"${ADMIN}"'",
      "password": "'"${PASSWORD}"'",
      "password_confirmation": "'"${PASSWORD}"'"
    }
  }'

关于我做错了什么的任何想法?和/或我如何将默认值设为false并POST一个具有真isAdmin属性的新用户?提前感谢您的任何建议。

澄清:使用Mongoose和ExpressAPI。

1 个答案:

答案 0 :(得分:0)

由于您将值括在双引号中,因此它似乎被视为字符串,而不是布尔值。试试这个:

ADMIN=true # may be it is safer to use all lowercase for true/false
curl "${API}${URL_PATH}" \
  --include \
  --request POST \
  --header "Content-Type: application/json" \
  --data '{
    "credentials": {
      "email": "'"${EMAIL}"'",
      "isAdmin": '${ADMIN}',
      "password": "'"${PASSWORD}"'",
      "password_confirmation": "'"${PASSWORD}"'"
    }
  }'