Giter VIP home page Giter VIP logo

oner-io's People

Contributors

alijs avatar cailongl avatar jias avatar liangzugeng avatar lpgray avatar npmcdn-to-unpkg-bot avatar tommytroylin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

oner-io's Issues

POST 模式乱码问题

在GET请求发送到后端解析的时候,没问题。 切换到POST 模式传到后台解析是乱码,如果把请求头中下面两个配置进行默认值增强,注意要同时增强,即可以解决。

"Content-Type": 'application/x-www-form-urlencoded; charset=UTF-8'
"Accept":'application/json, text/json' 

使用插件后,错误的情况 res 不走 fit 处理 v2.3.4

  1. 开发请求插件,并提供 fit 函数
  2. 请求正确响应时,原始服务端请求数据经过 fit 自定义的处理
  3. 错误响应时,原始数据没有经过 fit 处理

eg

getA().then((res)=>{
	// 这里 res 是content 的内容,  经过我 fit 函数处理的
}).catch((res)=>{
	// 这里的 res 是整个mtop 响应的内容,没有经过fit 处理,因此 res 就是类似
})

插件示意代码

let request = function () {
    this.config.fit = (res) => {
      const fitRes = {};

      if (res.ret[0].indexOf('SUCCESS::') !== -1) {
        fitRes.success = true;
        fitRes.content = res.data;
        return fitRes;
      }
      fitRes.error = {
        message: res.ret,
        ret: res.ret
      };
      fitRes.content = res.data;
      fitRes.success = false;
      return fitRes;
    };
    this.config.customRequest = function (vars, config, process) {
      //noinspection JSUnresolvedFunction,JSUnresolvedVariable
      MTOPOpen.request(vars.data).then((resJson) => {
        //noinspection JSUnresolvedFunction
        process(true, resJson);
      }).catch((error) => {
        //noinspection JSUnresolvedFunction
        process(false, error);
      });
    };
};


@jias

pc 端 ie8/9 的问题

在 ie8/9 下,默认使用 XDomainRequest ,而XDomainRequest使用时,server 端必须要设置Access-Control-Allow-origin, 否则会报错:SEC7120

timeout && 并发 的bug

设置了timeout ,并发请求会cancled掉前面的一个请求~ 大bug!!! 速度解决……

希望加入 cache 功能

  1. 增加 middleware 机制。
  2. 新增 cachePlugin (支持 sessionStoragelocalStorage内存 等缓存方式「服务端甚至可以直接用 tair」)。
  3. cache 可以采用 sha1 来做 key
  4. key 的唯一性需要考虑。

IE9报错:无法获取未定义或 null 引用的属性“Content-Type“

引入的是:import nattyFetch from "natty-fetch/dist/natty-fetch.pc.js"

报错行数:604行

看了下代码,604行没有判断header为未定以或null的情况
header是通过调用setHeaders方法获取的,setHeaders方法里首先会判断xhr.setRequestHeader是否存在,如果否,直接return,ie下 !!xhr.setRequestHeader === true 所以header将为undefined,然后就报错了。

报错截图
image

怎么在fit中获取response 的http code

我们是通过返回的http code来判断 请求是成功还是失败的,所以要拿http code 决定success 还是error,但是看了下,回调函数中好像没有方法获取http code

urlMark参数设置不生效

我对urlMark 设置 false 或者 true 都会在url后面增加上_api=*** 这个参数变量 . 是否有哪里设置的不正确导致 , 求指导

IE 兼容性问题: window.toString

var isArray = function (v) {
    return toString.call(v) === ARRAY_TYPE
};

在这里你调用了 window.toString(),在 IE9 和 IE10 中是无法正常运行的

natty-fetch什么时候支持restful,钉钉开发中需求,急等中...

当前,nowa框架已经很好的支持了前端的开发, 前后端分离的. 都在用restful API规范的接口.
natty-fetch,怎么能不支持呢?
现在,经过钉钉的推荐,已经发行natty是非常好的工具了,但是resful的不支持,确实是一个很大的遗憾.
尤其是作为标榜一个数据api接口的优秀工具.

请考虑对options的处理切入点。

如果在context.create({}),这里的选项,没有办法进行后继的一些处理,比如基于某些原因,项目中途使用此组件或者基于标准写法定义选项,后续是没有办法进行转换的。

dataContext.create({
getInitData: {
method: "GET",
url: "invoice/getInitData",
cache: "default"
})

比如 cache: "default" 是按fetch标准写法,要转换成你的storage,是无法实现的。

我加了一个事件,可以处理了,还有根据method == "POST"就可以全局作一些处理,这都是很常见的作法,
context.on("processOptions", function (config) {
if (config.method == "POST") {
config.header = Object.assign({}, config.header, { "Content-Type": "text/json" });
}

if (config.cache === "default") {
    config.storage = { type: 'localStorage', key: config.url, tag: 'v1.0' };
}

});

还有一个问题,目前导致我不能继续使用这个组件了,

在sendAjax 中POST方法下处理主体数据,你在内部序列化时进行了 params 化,但是并不是所有数据都是这种处理方法,外部无法进行处理。比如,我项目的提交数据格式必须是json。像zepto,jquery都有这方法的机制,用processData标记是否需要内部进行处理。

FromBody要如何POST数据?

netty对ajax方法进行了封装,无法通过ajax头来直接传递一个类的JSON数据,要怎么处理?
使用ajax,我们是这么处理的

$.ajax({
                    type: 'POST',
                    url: "/Api/XX",
                    contentType: 'application/json; charset=utf-8',//将json数据以request payload的形式发起请求
                    data: JSON.stringify(data),
                    success: function (response) {


                    }
                    catch (ex) {
                    }
                }
            });

使用natty的方式,已经设置了header,

 header: {
            'Accept': '_/_',
            'Content-Type': 'application/json; charset=utf-8',//将json数据以request payload的形式发起请求  
        }

但是针将JSON.stringfy(data)后的数据变成一长串,查代码发现是 var vars = t.makeVars(data)会修改它。
被转换后的数据如下:
0=%5B&1=%22&2=c&3=h&4=a&5=t&6=5&7=4&8=4&9=7&10=3&11=8&12=0&13=2&14=d&15=f&16=1&17=6&18=8&19=1&20=d&21=2&22=6&23=d&24=3&25=5&26=2&27=0&28=6&29=3&30=f&31=d&32=a&33=6&34=a&35=4&36=e&37=3&38=%22&39=%2C&40=%22&41=A&42=%22&43=%2C&44=%22&45=B&46=%22&47=%2C&48=%22&49=C&50=%22&51=%5D
这个数据明显是不对的。
natty要怎么设置才能实现,传输到后端可以被FromBody接收?

新增对过快请求的 override 配置

在搜人控件等场景下,用户输入会比较快,希望可以做下控制。
大概实现逻辑是:

在发请求之前,如果发现之前 XHR 存在,就调用下 abort

Request Payload问题

JSON.stringify后:
{"user2Id":1000001,"salesTypeId":1000008,"cEquotsetId":1000000,"bpartner":"张三","phone":"13562591755","equipClassId":1000005,"equipModelId":1000013,"salesAmt":1000000,"downpaymentRate":0,"downpayment":0,"divideAmt":0,"divideNumber":0,"loanAmt":0,"loanNumber":0,"packDivideAmt":0,"packDivideNumber":0,"createdby":1000117}
POST提交,Request Payload如下:
default
后台:@requestbody没办法解析
default

v3.0

  • #12 #22 #20 进一步完善一次request的声明周期事件,删除不明确的willFetch/didFetch回调,提供灵活的切入点控制,即中间件支持。
  • 考虑支持同构(待定)
  • #17 context.create()返回当次创建的接口集合
  • fit接口简化
  • webpack+babel组合切换到rollup+buble组合,开发过程中的构建速度更快,最终打包的代码更小。
  • RESTfull API 支持

多实例情况下,natty-fetch 的 jsonp 接口生成函数会产生冲突

nattyfetch 里面,生成 jsonp 接口的函数,后面跟从1开始自增 ID,这样多实例并发请求下,有一定几率会产生全局jsonp callback 重复

建议使用随机数的方式来生成全局函数,这样更加准确。
比如

function makeid() {
  var text = "";
  var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

  for (var i = 0; i < 15; i++)
    text += possible.charAt(Math.floor(Math.random() * possible.length));

  return text;
}

console.log(makeid()+"_"+ +new Date());

withCredentials属性自动判断url是否跨域逻辑写反了

withCredentials属性自动判断url是否跨域逻辑写反了
xhr.withCredentials = isBoolean$1(options.withCredentials) ? options.withCredentials : isCD;
应该是
xhr.withCredentials = isBoolean$1(options.withCredentials) ? options.withCredentials : !isCD;

POST请求问题

POST时,框架内置Content-Type:application/x-www-form-urlencoded;
没办法重设,是否可以去掉此限制。

RSVP 捕获问题

RSVP error捕获范围太大,导致 then 成功后 的代码报错也被捕获,不利于排错

POST 格式 multipart/form-data

由于需要上传图片视频的文件,所以需要用到content-type:multipart/form-data,但是没有找到如何设置,老板能指点一下吗。用'RAW'的方式手动在header里面配置会缺少boundary=----WebKitFormBoundaryAnxxxxxx这一段,然后也不能请求成功~好像是浏览器bug还是什么,Fetch库也存在这个问题,可以通过不设置content-type字段解决。

willRequest 方法应该进行重构,这个库中应该集成 aop

一般类似 willRequest 这种前置方法,应该提供一种途径,去操作后续的动作

比如这个方法,我希望回调中有 process 方法中的 context 以及 defer 等 ,然后把 defer 也传进去,用户可以决定 defer 是否需要发送请求。

使用场景

  • 用这个方法来取缓存,通过 requestDatasha1 值,获取存在本地的 cacheData see #13 ,如果有的话,直接 resolve(data) ,跟 process 方法配合,用来做离线相当棒。

动态修改mock属性

我有一种使用场景是这样的:
一开始,使用的非mock数据,
nattyFetch.setGlobal({
mock: false
})
接下来用户想查看demo,我们必须使用mock数据了,测试尝试
nattyFetch.setGlobal({
mock: true
})
然后不起作用,调用api请求数据仍然是实用的非mock数据

所以,是否能够存在一种机制能够,批量修改所有已经创建的context的mock属性

错误提示

服务端抛出的400,500错误有好的解决方案吗

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.