V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wcflmy
V2EX  ›  程序员

基于 RESTful API 的 web 应用的架构设计问题

  •  1
     
  •   wcflmy · 2016-01-11 15:07:19 +08:00 · 3782 次点击
    这是一个创建于 3033 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我想基于 RESTful API 设计一个 web 应用,在前端利用 ajax 调用这些 api 接口获取数据并进行渲染。但对于具体的架构还不是很清楚,有以下几个疑问:
    1 、前端渲染时, html 模板是存放在哪儿的,存放在 js 中,还是另外启动一个后台服务来提供这些 html 模板?
    2 、有什么好的框架适合于这样的架构进行快速开发?
    3 、有哪些好的类似项目可以进行参考?
    望各位多多指教。
    第 1 条附言  ·  2016-01-11 15:57:54 +08:00
    是否是这样的:启动一个 WEB 服务作为静态站点,启动一个 WEB 服务作为 RESTful API (这两个 WEB 服务是否可以合并到一个物理服务器上?),静态站点只提供 html , css , image 等静态文件,然后用到的数据全部从 RESTful API 来获取并进行渲染,不知理解的对不对。
    14 条回复    2017-11-04 22:43:45 +08:00
    Levyzzz
        1
    Levyzzz  
       2016-01-11 15:16:55 +08:00
    Angular
    ethego
        2
    ethego  
       2016-01-11 15:19:02 +08:00
    你需要这个 http://cn.vuejs.org/
    wcflmy
        3
    wcflmy  
    OP
       2016-01-11 15:19:56 +08:00
    @Levyzzz
    能不能稍微再详细一些啊, html 模板是如何存放的,本人太菜,望悉心解答啊。
    wcflmy
        4
    wcflmy  
    OP
       2016-01-11 15:20:45 +08:00
    @ethego
    有没有一个比较好的项目或者例子可以参考一下啊,由于以前没有接触过这一块,所以现在不知从何下手。
    ethego
        5
    ethego  
       2016-01-11 15:25:19 +08:00
    @wcflmy vue 自带了组件化以及模板,按照事件动态地在前端进行渲染,大型应用还可以通过 webpack 进行打包,给你的官网里有示例
    timqian
        6
    timqian  
       2016-01-11 15:27:59 +08:00
    可以放在 github page 上
    wcflmy
        7
    wcflmy  
    OP
       2016-01-11 15:29:50 +08:00
    @ethego
    好的,万分感谢!
    hantsy
        8
    hantsy  
       2016-01-11 16:11:37 +08:00
    前端可以是 SPA 模式,纯静态的。用 Node , Apache , Ngnix 运行,还可以打包成 APP (如使用 Ionic 框架)。目前主流框架包括 Angular , React , Meteor , Backbone , EmberJS 等。如果你感兴趣,可以看我 Github 上的 Angular 例子,全部采用 SPA 方式,大部分为了演示与 REST API 部署在一起,也有一些分开部署。

    用户量不大,应用不复杂的情况下 REST API 可以用一个 Sever 来独立运行即可。

    复杂的业务,高并发等,可以是多个 REST API 细分,如订单,产品等 API 分拆,分开部署,再使用 API Gateway 方式统一暴露给前端( SPA 站点, HTML 5 APP , Native APP , Desktop APP 等)。
    wcflmy
        9
    wcflmy  
    OP
       2016-01-11 16:36:30 +08:00
    @hantsy
    对,我想做的就是一个 SPA 应用。我想的是这样,一个纯静态 WEB 服务( node/apache/ngnix ),用来提供 html , js , css , image 等。然后再开启一个 WEB 服务( node or apache/ngnix+php )作为 RESTful API ,需要用到的数据直接利用 ajax 调用 RESTful API 获取,是这样的吗?
    1 、这两个 web 服务是否可以放在同一个物理服务器上(否则需要处理跨域问题),我觉得应该是可以的, http://www.example.com/ 作为首页, http://www.example.com/api/ 作为 RESTful API 的入口。但还是确认一下。
    2 、这里的 SPA ,是否指 single-page application,又是 spa 模式, spa 站点, spa 应用的,我怕我搞错概念了, -_-||
    3 、劳烦大神留下 github 地址^_^
    yimity
        10
    yimity  
       2016-01-11 17:22:12 +08:00
    最后的讨论已经让你明白这个架构了。
    qinxi
        11
    qinxi  
       2016-01-11 17:33:12 +08:00
    @wcflmy 点人头像进去就看到 github 了.....
    minsheng
        12
    minsheng  
       2016-01-11 18:47:31 +08:00 via iPhone
    RESTful API 服务器推荐用 Haskell Servant 来做,因为可以静态生成类型安全的 API ,自带了 Haskell/JavaScript/PureScript 支持,有需要也可以自行扩展。
    hantsy
        13
    hantsy  
       2016-01-11 19:13:49 +08:00
    @hantsy 就 Java 而言,多个服务可以是多个 War 部署同一个服务器,如 Tomcat , 或者不同的 Tomcat (改端口,仍然是同一物理机器),也是不同的机器( IP 不同,不同物理机,或虚拟机,或容器)。

    跨域最简单的方式,对于 SPA 站点来讲,配置一下 Apahce/Ngnix/NodeJS HTTP 代理。当然服务器端也可以使用 CORS Filter 之类的打开, Tomcat 内置一个 CORSFilter , Spring 4.2 也内置了方案(一行代码解决)。使用 IFrame ( Spring Security 默认禁用), JSONP ( Spring MVC 简单的两配置也可以实现) 是下下策。移动 APP 无需考虑跨域。
    zcdll
        14
    zcdll  
       2017-11-04 22:43:45 +08:00
    2017 年 11 月 4 日,再看这位同学的提问,感觉挺有意思的。

    要多思考。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   814 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 20:05 · PVG 04:05 · LAX 13:05 · JFK 16:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.