使用 Curl 访问 Flask REST Api 不起作用
Accessing Flask REST Api with Curl doesn't work
我构建了一个非常简单的烧瓶 api,它询问神经网络通过 POST 给出了哪种语言。
请求
curl -H "Content-Type: application/json" -X POST -d "{"""text""":"""This should be recognized as an english text."""}""" http://<IP>:5000/api/v1.0/findlanguage
Api 通过 GET 的调用在浏览器中工作,它们 return 所有需要的 json 对象。 Flask 还在服务器端做出响应,表示有一个 GET 请求,他 return 使用 HTTP 代码 200 编辑了该请求。
但是上面的 POST 请求不会引起 Flask 的任何输出。我猜它进入了某种控制台,因为我都看到了这个:
>_
就是这样。这可能是什么?我错过了什么吗?
预期输出应该是一个 json 对象,例如:
{
'task': 'findlanguage',
'result': 'english',
'api': 'v1.0',
'call': 'http://<ip>:5000/api/v1.0/findlanguage'
}
请求根本没有发送; shell 在 运行 curl
之前等待进一步输入。
But the POST request above doesn't provoke any output from Flask. It enters some kind of console I guess because I all see is this:
>_
如果命令包含不平衡的引号字符,您将看到这一点。例如,尝试:
curl -H "Content-Type: application/json""
如果您在该提示符下键入另一个 "
并按下 return
键,命令将执行。
但这只是一个例子。问题中命令示例中的问题不是由于 Content-Type
字符串周围的引号引起的,而是由于 -d
选项的参数引起的。
你真的在那里使用 """
三行双引号吗?如果是,为什么?
不管怎样,你在 {
大括号之前有一个双引号,然后在 }
大括号之后有三个双引号,这显然不对。
为什么不直接将 -d
参数放在单引号中:
-d '{"text":"This should be recognized as an english text."}'
我构建了一个非常简单的烧瓶 api,它询问神经网络通过 POST 给出了哪种语言。
请求
curl -H "Content-Type: application/json" -X POST -d "{"""text""":"""This should be recognized as an english text."""}""" http://<IP>:5000/api/v1.0/findlanguage
Api 通过 GET 的调用在浏览器中工作,它们 return 所有需要的 json 对象。 Flask 还在服务器端做出响应,表示有一个 GET 请求,他 return 使用 HTTP 代码 200 编辑了该请求。
但是上面的 POST 请求不会引起 Flask 的任何输出。我猜它进入了某种控制台,因为我都看到了这个:
>_
就是这样。这可能是什么?我错过了什么吗?
预期输出应该是一个 json 对象,例如:
{
'task': 'findlanguage',
'result': 'english',
'api': 'v1.0',
'call': 'http://<ip>:5000/api/v1.0/findlanguage'
}
请求根本没有发送; shell 在 运行 curl
之前等待进一步输入。
But the POST request above doesn't provoke any output from Flask. It enters some kind of console I guess because I all see is this:
>_
如果命令包含不平衡的引号字符,您将看到这一点。例如,尝试:
curl -H "Content-Type: application/json""
如果您在该提示符下键入另一个 "
并按下 return
键,命令将执行。
但这只是一个例子。问题中命令示例中的问题不是由于 Content-Type
字符串周围的引号引起的,而是由于 -d
选项的参数引起的。
你真的在那里使用 """
三行双引号吗?如果是,为什么?
不管怎样,你在 {
大括号之前有一个双引号,然后在 }
大括号之后有三个双引号,这显然不对。
为什么不直接将 -d
参数放在单引号中:
-d '{"text":"This should be recognized as an english text."}'