如何使API抽象层代码更整洁

时间:2019-03-06 07:23:30

标签: javascript reactjs rest

简介

我正在开发一个必须与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和指定的参数来获取,发布,...数据。

0 个答案:

没有答案