我正在开发一个必须与rest api通信的react应用程序。目前完整的api尚未完全实现,因此我正在制作模型,为了避免代码浪费,我在模型/ api和应用程序之间添加了一个抽象层。
目前,我有一些类表示api中的组件(例如“用户”)。网址为obj1/obj2/ob3/
的获取请求被翻译为javascript server.get("obj1").get("obj2").get("obj3").fetch(...args).then(onsucces,onerror)
。
fetch
将返回承诺。其他方法
我的问题分为两部分。
首先,有一种方法可以清理此部分.get("obj1").get("obj2").get("obj3")
。 (我不认为React支持代理。)
第二,如果您有递归请求
server.get("user").get(<id>).fetch(
(user)=>{
update_ui(user);
user.books.fetch(
(books)=>{
update_ui(books);
},(error)=>{}
)
},(error)=>{}
)
它们很快就会变得丑陋,是否有一种类似于.then(...).then(...)
(用于诺言)的方法来使它们变平,或者以不同的方式完成,从而可以得到更好的代码。
get().get()...fetch()
的作用gets会构造一条路径,从该路径中将为实际的api执行fetch ...操作,这些操作将是模拟的url,可能是硬编码的字典。
例如get("users").get(<userid>)
对应于以下形式的对象
{
path:"users.<userid>" //(or any other seperator)
fetch: function(...args) //GET specified in the api
push: null // api doesn't specify a POST request for this url
...
}
HTTP请求到javascript的翻译如下:
fetch
push
set
update
pop
然后,这些方法(fetch
)的实现将使用path
和指定的参数来获取,发布,...数据。