美文网首页
【Flask】关于request.json /.values /

【Flask】关于request.json /.values /

作者: Allennnnnnn | 来源:发表于2019-03-25 21:09 被阅读0次

    这篇文章和你看到的其他的可能有出入,看完了可以去试试

    这个问题网上很多帖子说到,随便一搜就行。我今天说一下用Flask做后端,Vue做前端的一些经验。

    跨域出门左转flask-CORS,别用JSONP,那个基本是一群技术宅hack出来的

    前端请求

    我这里用的是vue-resource。以POST为例

    this.$http.post(
        this.url,
        this.form,
        {emulateJSON:true}
    ).then(function (res) {
        console.log(res);
    })
    

    这个{emulateJSON:true}很多讲vue-resource的博客都说让你加上,我的意见是呢,不加。
    如果加了的话,header会有
    Content-Type: application/x-www-form-urlencoded
    Flask会把它作为正常表单处理,也就是键值对。这就有个问题,传数组等数据结构会很麻烦,因为表单会对数组进行拆分传输,就不细说了,google一下很多。

    不加这个,默认
    Content-Type: application/json
    Flask会处理为json数据,这样子很多js数组和对象都可以直接被解析成json,非常方便。

    我估摸那些文章应该是SPA流行起来之前写的

    后端接收数据

    这个地方就会涉及到用哪一个的问题。我的办法比较蠢,开debug,用postman发请求,一个个看数据什么样。

    所以我就发现了和网上文章有出入的地方

    首先,很多文章说values可以访问所有数据。没错,如果是post表单或者get的话。这也是前面很多人说使用{emulateJSON:true}一个原因,不用纠结啊。

    表单的数据同样可以在form中访问,具体有什么区别我也忘了,估摸着应该是

    values = args + form

    我是写代码突然想起来写这篇文章的,懒得去测试了,如果有问题告诉我我改一下

    Content-Type: application/json时,数据会全部被存放在json中,其他部分是空的。

    兼容的写法

    data = request.json.get('data') or request.values.get('data')
    

    总结一哈

    args: get参数
    form: post表单
    values: args + form
    json: json数据

    相关文章

      网友评论

          本文标题:【Flask】关于request.json /.values /

          本文链接:https://www.haomeiwen.com/subject/qwcivqtx.html