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

Pac*_*ver 3 python rest json curl web.py

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

希望将JSON有效负载发送到我的服务器,然后打印有效负载的值...

样本负载

{"name":"Joe"}
Run Code Online (Sandbox Code Playgroud)

这是我的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()
Run Code Online (Sandbox Code Playgroud)

这是我的cURL命令:

curl -H "Content-Type: application/json" -X POST -d '{"name":"Joe"}' http://localhost:8080/hello
Run Code Online (Sandbox Code Playgroud)

我希望这个回复(纯文本):

Hello Joe!
Run Code Online (Sandbox Code Playgroud)

感谢您抽出时间来阅读...

rof*_*fls 10

你必须解析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()
Run Code Online (Sandbox Code Playgroud)

另外,请确保您的网址http://localhost:8080/hello/符合您的cURL要求; http://localhost:8080/hello在你的例子中,你会抛出一个错误.