如何在 web.py 服务器应用程序中从 Post 获取 JSON 值?

How to obtain JSON value from Post in a web.py server app?

我正在使用 Python 2.7.6 和 web.py 服务器来试验一些简单的 Rest 调用...

希望向我的服务器发送一个 JSON 负载,然后打印负载的值...

有效负载示例

{"name":"Joe"}

这是我的 python 脚本

#!/usr/bin/env python
import web
import json

urls = (
    '/hello/', 'index'
)

class index:
    def POST(self):
        # How to obtain the name key and then print the value?
        print "Hello " + value + "!"

if __name__ == '__main__':
    app = web.application(urls, globals())
    app.run()

这是我的 cURL 命令:

curl -H "Content-Type: application/json" -X POST -d '{"name":"Joe"}' http://localhost:8080/hello

我期待这样的响应(纯文本):

Hello Joe!

感谢您花时间阅读本文...

您必须解析 json:

#!/usr/bin/env python
import web
import json

urls = (
    '/hello/', 'index'
)

class index:
    def POST(self):
        # How to obtain the name key and then print the value?
        data = json.loads(web.data())
        value = data["name"]
        return "Hello " + value + "!"

if __name__ == '__main__':
    app = web.application(urls, globals())
    app.run()

此外,请确保您的 url 是 http://localhost:8080/hello/ 在您的 cURL 请求中;您的示例中有 http://localhost:8080/hello,这会引发错误。