V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
iphantom
V2EX  ›  Python

[求助] 如何 python 搭建服务器,实现返回 json 类型值,从来没接触过,求助啊

  •  1
     
  •   iphantom · 2016-06-03 09:59:40 +08:00 · 5837 次点击
    这是一个创建于 3097 天前的主题,其中的信息可能已经有所发展或是发生改变。
    输入 https://xx.xx.xx.xx/getname

    返回 {"A":"b"}


    求助求助 没搭建过服务器 一来实验室就被导师要求完成这个任务·····
    30 条回复    2016-06-14 11:20:20 +08:00
    iphantom
        1
    iphantom  
    OP
       2016-06-03 10:00:36 +08:00
    求帮助 求帮助 给点思路或者例子啥的
    peter999
        2
    peter999  
       2016-06-03 10:01:44 +08:00
    import json
    return json.dumps({"A":"b"} )
    iphantom
        3
    iphantom  
    OP
       2016-06-03 10:04:23 +08:00
    @peter999 ···这个我查到了 我想知道服务器那边如何整 求助
    4cat
        4
    4cat  
       2016-06-03 10:05:43 +08:00
    from flask import Flask, jsonify
    app = Flask(__name__)


    @app.route('/getname')
    def getname():
    return jsonify({"A": "b"})

    if __name__ == '__main__':
    app.run()
    faceair
        5
    faceair  
       2016-06-03 10:06:40 +08:00
    如果不要求一定用 python 的话可以用这个 https://github.com/typicode/json-server
    hyrijk
        6
    hyrijk  
       2016-06-03 10:08:46 +08:00
    jinxueliu
        7
    jinxueliu  
       2016-06-03 10:08:53 +08:00
    用 Flask 搭个服务器吧,非常好用,后期也容易扩展
    clino
        8
    clino  
       2016-06-03 10:11:38 +08:00
    uliweb

    @expose("getname")
    def getname():
    --return(json({"A":"b"}))
    annielong
        9
    annielong  
       2016-06-03 10:16:21 +08:00
    直接输出数据就可以了,一般根据参数获得数据后,在前台加 css ,表格什么的格式化输出,需要 json 的话直接输出 json 格式的数据就行了
    iphantom
        10
    iphantom  
    OP
       2016-06-03 10:21:35 +08:00
    @4cat 非常感谢 我安装下 flask 试着去完成下

    @faceair 现在上不了 github 晚上回宿舍看看 没要求一定要用 python 只是感觉 python 可能会简单点 谢谢了

    @hyrijk 雪中送炭啊 配合 @4cat 的程序 一起看 谢谢了

    @jinxueliu 谢谢

    @clino 谢谢

    @annielong ·····有点麻烦 一个小要求 完成要求就行 对其他的没啥要求 谢谢了
    4cat
        11
    4cat  
       2016-06-03 10:25:51 +08:00
    @iphantom 只是临时试验直接 python script_name.py 就可以了。
    如果想要更全面的部署可以了解一下 nginx + gunicorn + supervisor + flask ,资料 Google 一下有很多。
    sciooga
        12
    sciooga  
       2016-06-03 10:28:06 +08:00 via Android
    content-type
    icybee
        13
    icybee  
       2016-06-03 10:33:49 +08:00
    二楼
    am241
        14
    am241  
       2016-06-03 10:33:57 +08:00 via Android
    restful api

    nginx+uwsgi+flask+supervisor
    iphantom
        15
    iphantom  
    OP
       2016-06-03 10:44:55 +08:00
    @4cat 实验室是重点实验室 访问不了外网 做个模拟器 把一些链接的值返回过来 大致是这个意思
    playniuniu
        16
    playniuniu  
       2016-06-03 10:58:56 +08:00
    首先,你需要了解什么叫做 restful, 然后使用 flask , bottle , django , tornado 之类的其中一个,搭建一个 restful api server ,最简单的是 bottle 和 flask
    cwlmxwb
        17
    cwlmxwb  
       2016-06-03 11:01:34 +08:00 via iPhone
    你要只是单纯的这种 jsonjson 格式数据返回的话,为什么不自己这个 tcp 服务器呢?感觉有点大材小用
    aljun
        18
    aljun  
       2016-06-03 11:37:09 +08:00 via iPhone
    http://jolla.readthedocs.io/zh/latest/

    一个清量的 Python 的 json API server
    iphantom
        19
    iphantom  
    OP
       2016-06-03 14:33:03 +08:00
    @4cat 你好 我想问个问题 若 route 和 return 有中文字符运行后会报错
    已经添加了
    # -*- coding:utf-8 -*-
    from flask import Flask
    import json
    import sys
    reload(sys)
    sys.setdefaultencoding('utf-8')

    但是不管用···
    mengzhuo
        20
    mengzhuo  
       2016-06-03 14:59:34 +08:00 via iPhone
    我安利个自己的
    https://github.com/mengzhuo/justrpc

    带 cli
    注册机制
    4cat
        21
    4cat  
       2016-06-03 15:19:57 +08:00 via Android
    @iphantom
    建议使用 Python3 ,这样就不用考虑编码问题。
    如果是 Python2 应该要这样。
    # coding:utf-8
    from flask import Flask, jsonify
    app = Flask(__name__)

    @app.route(u'/测试')
    def getname():
    ____return jsonify({u"测试": u"测试"})

    if __name__ == '__main__':
    ____app.run(debug=True)
    4cat
        22
    4cat  
       2016-06-03 15:22:20 +08:00 via Android
    # coding:utf-8
    from flask import Flask, jsonify
    app = Flask(__name__)

    @app.route(u'/测试')
    def getname():
    ____return jsonify({"测试": "测试"})

    if __name__ == '__main__':
    ____app.run(debug=True)

    自己多看看 Debug 消息, Google 一下。
    m939594960
        23
    m939594960  
       2016-06-03 15:27:11 +08:00
    为啥这段时间 V2EX 这种问题都有那么多人问
    jianguiqubaa
        25
    jianguiqubaa  
       2016-06-03 20:31:07 +08:00
    iphantom
        26
    iphantom  
    OP
       2016-06-06 09:27:10 +08:00
    @mengzhuo 谢谢
    @4cat 谢谢 我安装了 python3 但是在网页上显示的仍然不是中文 不过运行可以运行了 我再研究研究
    @starriv 谢谢
    @jianguiqubaa 谢谢
    4cat
        27
    4cat  
       2016-06-06 10:43:27 +08:00 via Android
    @iphantom 了解一下 Unicode , Chrome 装个 JSONView
    iphantom
        28
    iphantom  
    OP
       2016-06-06 14:56:58 +08:00
    @4cat 完美 非常感谢
    iphantom
        29
    iphantom  
    OP
       2016-06-14 10:50:50 +08:00
    @4cat 大神 遇到个问题需要求助你

    @app.route('/getname') 这样的链接是可以的

    @app.route('/getname?abc') 这样的动态链接应该怎么实现 一运行就报错 flask 貌似都是静态的
    4cat
        30
    4cat  
       2016-06-14 11:20:20 +08:00
    @iphantom 我也是新手

    from flask import Flask, request
    app = Flask(__name__)

    @app.route('/getname')
    def api_hello():
    ____if 'name' in request.args:
    ________return request.args['name']
    ____else:
    ________return "Test"
    if __name__ == '__main__':
    ____app.run(debug=True)


    http://127.0.0.1:5000/getname?name=cat


    而且用 @app.route('/getname/<name>') 这种方式看起来不是更舒服么?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3048 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 14:15 · PVG 22:15 · LAX 06:15 · JFK 09:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.