使用 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."}'