跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 开发与实施交流
  4. 【已解决】如何在Controller中获取application/json的body数据?

【已解决】如何在Controller中获取application/json的body数据?

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
8 帖子 3 发布者 2.0k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 水 离线
    水 离线
    水在时间之下
    写于 最后由 水在时间之下 编辑
    #1

    在定义好controller后,将类型定义为 json,如果获取别人请求的数据?
    @http.route('/test', auth='none', type='json', csrf=False)
    def test(self, **kw)
    _logger.info('The controller is worked')
    return {'code': 200}

    在这里获取kw是空的,如何获取到请求里的数据?

    1 条回复 最后回复
    0
    • 水 离线
      水 离线
      水在时间之下
      写于 最后由 编辑
      #2

      @digitalsatori @hui

      1 条回复 最后回复
      0
      • G 离线
        G 离线
        guwenfengvip163.com
        写于 最后由 编辑
        #3

        ''' http.request.httprequest.data ''' 试试这个

        水 1 条回复 最后回复
        0
        • 水 离线
          水 离线
          水在时间之下
          写于 最后由 编辑
          #4

          空的,没取出来,我用postman模拟发送的请求
          0_1535018528314_836d50aa-b8e9-4b8f-8146-f5afb2b1444b-image.png
          但是取出来的是空的

          1 条回复 最后回复
          0
          • 水 离线
            水 离线
            水在时间之下
            在 回复了 guwenfengvip163.com 最后由 编辑
            #5

            @guwenfengvip163-com

            1 条回复 最后回复
            0
            • 水 离线
              水 离线
              水在时间之下
              写于 最后由 编辑
              #6

              Controller写法还是有问题,因为请求的机制不同,请求的数据是一个json而且不再url后面,也不在post的data里面,二十直接封装在请求的body体里面,故此,需要拿到请求体,这里也是@guwenfengvip163-com的回帖给了我启发,谢谢!我把controller做了以下改进|:
              @http.route('/test', auth='none', type='json', csrf=False)
              def test(self, request, **kw)
              params = request.jsonrequest
              _logger.info(params)
              return {'code': 200}
              修改是:
              首先在参数里面加上了request,再就是通过request.jsonrequest拿到请求体,其实拿到的请求体,就是访问的json数据。
              说点废话:kw里面是空的,取不到任何值,有兴趣的可以研究研究,如果kw里面有值,是怎么传进去的,又是何种请求方式。
              最后,谢谢大家的帮助!

              1 条回复 最后回复
              1
              • D 离线
                D 离线
                digitalsatori 管理员
                写于 最后由 编辑
                #7

                请求端的json数据构造为下面的格式,试试:

                jsondata = '{"params": YourdataDictHere}'
                

                【上海先安科技】(tony AT openerp.cn)

                水 1 条回复 最后回复
                0
                • 水 离线
                  水 离线
                  水在时间之下
                  在 回复了 digitalsatori 最后由 编辑
                  #8

                  @digitalsatori 其实请求端我控制不了,是电信平台的,我只是在他们平台设置了一个回调地址,然后我这边用controller实现。然后按电信平台的要求写的,请求方式是https,post,类型是application/json,不过已经都解决啦,谢谢

                  1 条回复 最后回复
                  0

                  • 登录

                  • 没有帐号? 注册

                  • 登录或注册以进行搜索。
                  • 第一个帖子
                    最后一个帖子
                  0
                  • 版块
                  • 标签
                  • 热门
                  • 用户
                  • 群组