SPA - 处理DTO

时间:2017-07-04 16:42:31

标签: javascript c# angularjs api web

我想基于例如任何js框架实现SPA。 Angular JS。我已经有许多现有的Web API,其中包含我需要在app上显示的信息。我必须再添加1个将管理新信息。新的将引用其他Dtos。我的问题是,更好的方法是调用API并在Web应用程序上编译Dto或在新API中调用API合并所有数据并使用ready对象创建GET方法。

从网站角度来看

第一方法:

@IBAction func editItemDetail(segue: UIStoryboardSegue) {
    if let editItemViewController = segue.source as? EditItemViewController {

        // Save the edited item to the struct and update the plist
        if let changedItem = editItemViewController.editedItem {
            items.remove(at: editKey)
            items.insert(changedItem, at: editKey)
            // Update the plist
            itemPlistUpdate()
        }
    }
}

合并Angular Js Web中的所有数据

从网站角度来看

第二方法:

合并Order Web API上的所有内容

Call (i know userId - based on logged in user [in this example = 1])

/get/order/{userId}
{
UserId: 1
Products:{1,2}
}

based on that call:

/get/user/1
{
FirstName: test,
LastName: test
}

/get/product/1
{
Price: 10,
Name: Test
}

/get/product/2
{
Price: 100,
Name: Test2
}

我附上截图以更好地概述。

Diagram

1 个答案:

答案 0 :(得分:0)

这是可重用性和专业化之间的权衡。可重用性带来了明显的优势 - 您可能最终不得不做更少的工作。通过专业化,您的前端可以按原样使用API​​。通过专业化,您也只会加载实际需要的数据,而对于许多独立的API,可能会有冗余数据,可能会略微增加开销。

我真的不认为有一种方法比另一种更好。这一切都取决于它是否适合您的具体情况。我认为你应该选择每个案例的方法。如果某些端点无论如何都没有被重用,那么您也可以创建一个"合并" /专用版本,您可以在一个调用中获得所有内容。在您的应用程序的其他部分,您可能有更可重用的端点,因此您坚持使用它们,并做更多的事情"处理"客户端。

关于性能(单个API调用与多个),HTTP / 2协议可能会有一点点轻微支持多个较小的API端点。

对于Angular而言,一种方法是否优于另一种方法,并不重要。 Angular并不关心。 : - )