api和restful_RESTful API和网站位于同一URL中

news/2024/5/8 23:53:04/文章来源:https://blog.csdn.net/danpu0978/article/details/107276143

api和restful

例如,查看Github RESTful API。 要获取有关存储库的信息,您应该向api.github.com/repos/yegor256/rultor发出GET请求。 作为响应,您将获得一个JSON文档,其中yegor256/rultor存储库的所有详细信息。 尝试一下,URL不需要任何身份验证。

要在一个漂亮HTML + CSS页面中打开相同的存储库,您应该使用另一个URL: github.com/yegor256/rultor 。 URL不同,服务器端绝对不同,但是数据的性质完全相同。 唯一更改的是表示层。

在第一种情况下,我们得到JSON; 第二个-HTML。

结合起来怎么样? 两者使用相同的URL和相同的服务器端处理机制如何? 如何将整个渲染任务转移到客户端(浏览器)并使服务器仅处理数据?

金善焕(2008)

金善焕(2008)

XSLT是可以帮助我们做到这一点的技术。 在“浏览器中的XML + XSLT”中,我简要地解释了它在浏览器中的工作方式。 简而言之,服务器返回带有一些数据的XML和指向XSL样式表的链接。 在浏览器中执行的样式表将XML转换为HTML。 XSL语言与其他任何渲染引擎(如JSP,JSF,Tiles或您拥有的东西)一样强大。 实际上,它功能更强大。

使用这种方法,我们从服务器上删除了整个渲染层(MVC范例中的“视图”)并将其移至浏览器。

如果我们能够实现,则Web服务器将仅使用RESTful API,并且每个响应页面都将附加XSL样式表。 我们得到什么? 我们将在文章结尾处稍后讨论。 现在,让我们看看我们将面临哪些问题:

  1. JSON没有呈现层。 没有诸如XSLT for JSON这样的东西。 因此,我们将不得不忘记JSON,而只保留XML。 对我来说,这听起来很不错。 其他人则不喜欢XML,而只喜欢使用JSON。 从来没有了解他们:)
  2. 并非所有浏览器都支持XSLT 2.0。 XSLT 1.0甚至仅受其中一些支持。 例如,Internet Explorer 8根本不支持XSLT。
  3. 浏览器仅支持GETPOST HTTP方法,而传统的RESTful API至少也利用PUTDELETE

第一个问题不是真正的问题。 这只是品味(和教育水平)的问题。 最后两个问题更为严重。 让我们讨论一下。

服务器上的XSL转换

某些浏览器不支持XSLT。 我们该如何解决?

我认为最好的方法是在每个请求中解析User-Agent HTTP标头,然后进行猜测,不管这个特定版本的浏览器是否支持XSLT。 这样做并不难,因为此兼容性信息是公开的。

如果浏览器不支持XSLT,我们可以在服务器端进行转换。 我们已经有了服务器生成的带有数据的XML,并且已经附加了XSL。 我们要做的就是将后者应用于前者并获得HTML页面。 然后,我们将HTML返回到浏览器。

除此之外,我们还可以注意Accept标头。 如果将其设置为application/xmltext/xml ,那么无论User-Agent在说什么,我们都会返回XML。 基本上,这意味着某些API客户端正在与我们对话,而不是与浏览器对话。 这个客户对HTML并不感兴趣,而对XML格式的纯数据感兴趣。

POST代替PUT

没有解决方法。 浏览器对PUTDELETE一无所知。 因此,我们还应该在我们的RESTful API中忘记它们。 我们应该仅使用两种方法设计API: GETPOST 。 这有可能吗? 是。 为什么不? 它看起来不像所有六个方法都花哨(某些API也使用OPTIONSHEAD ),但是它可以工作。

我们获得什么?

好的,这是一个问题-我们为什么需要这个? 大多数人现在的工作方式有什么问题? 为什么我们不能将网站与API分开? 如果将它们结合起来,将会获得什么好处?

自2011年以来,我一直将它们组合到我使用过的所有Web应用程序中。我最大的好处是避免了代码重复。

显然,在服务器中我们不复制控制器(对于MVC)。 我们只有一层控制器,它们同时控制API和网站(因为它们现在是一回事)。

避免代码重复是非常重要的成就。 而且,我相信它是任何软件项目的最重要目标。

这些小型Web应用程序的工作原理与上面所述完全相同: s3auth.com , stateful.co和bibrarian.com 。 它们都是开源的,您可以在Github中查看其源代码。

相关文章

您可能还会发现以下有趣的帖子:

  • 浏览器中的XML + XSLT
  • 避免字符串串联
  • 为什么NULL是错误的?
  • 实用程序类的OOP替代

翻译自: https://www.javacodegeeks.com/2014/09/restful-api-and-a-web-site-in-the-same-url.html

api和restful

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_732563.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高扩展性网站的原则

高扩展性网站的原则 本文转自被遗忘的博客园博客,原文链接:http://www.cnblogs.com/rollenholt/p/4445248.html,如需转载请自行联系原作者

zabbix web 监控 https网站

2019独角兽企业重金招聘Python工程师标准>>> 由于工作需要,通过WEB监控HTTPS网站,是否能访问。在配置界面上对网站认证,不需要勾选SSL。因为,实际通过curl访问,而CURL访问https网站是通过-k参数访问的&…

万网免费主机wordpress快速建站教程-万网主机申请

很多小伙伴在万网的免费主机申请活动中建立起了自己的个人网站,但还是还有许多小伙伴现在想建站,却发现官网找不到免费主机的申请地址了,以为活动结束了?其实还是可以继续申请免费主机的,接下来小编给大家介绍如何获取…

使用Windows Server 2003搭建一个asp+access网站

鼠标右键->新建->网站->下一步->描述(随便给一个,这里我以test为例) ->下一步->下一步->输入主目录的路径,默认路径下是C:\Inetpub\wwwroot->下一步->下一步->完成 当前已创建好网站,默认是停止状态的(因为默认…

Axure原型绘制篇(一)如何设计一款产品网站

2019独角兽企业重金招聘Python工程师标准>>> 很感谢开源中国这个平台能提供这样一个技术性的场地,供技术爱好者们勇往直前的学习。下面给大家讲述一下作为一个技术人员的转型史(工作经验),百转千回最后到了产品&#x…

【转】 普及下网站前端知识【局域网、公网、混合网络】站点监测(上篇)

针对web前端的性能,一时间不知道入手的同学,可以看看:前端性能测试对象:HTML、CSS、JS、AJAX等前端技术开发的Web页面影响用户浏览网页速度的因素:服务端数据返回、网络传输、页面渲染,页面资源结构等前端性…

jekyll静态博客主题_静态网站生成器枪战– JBake vs Jekyll

jekyll静态博客主题今年早些时候,我一直在尝试使用静态网站生成器。 我最终的目标是将这个博客以及其他一些博客转移到静态站点中。 经过一些实验,我的结论是可以预见的。 询问任何一个要使用博客的软件。 大多数人会立即建议WordPress 。 最长的时间&…

通过互动课程网站magic sandbox学习kubernetes:1.1入门magic sandbox及service概念整理

kubernetes互动课程学习 标签:kubernetes 实践 在师兄的介绍下发现了神奇的awesome-kubernetes,里面有着很多的资源,其中之一就是非常有趣的interactive learning environments。其实官方英文教程里面也有一些简单的H5互动模块,…

【程序员节特别推送】搭建一个与技术无关的博客网站(Java后台)

文章目录沉晓s Blog一、博客概述二、需求与功能三、开发介绍四、关于部署五、关于项目本身六、我与CSDN沉晓’s Blog 一、博客概述 ? 项目背景 我一直追求着一种纯粹,写技术博客,就好好地写,心无旁骛。 我目前唯一写作的平台就是CSDN&am…

LAMP环境搭建实现网站动静分离[转]

目录: 1、环境概述 2、动静分离拓扑图 3、各服务器功能规划 4、各服务器基础环境配置 5、httpd安装配置 6、php安装配置及启用opcache加速功能 7、mysql安装配置 8、wordpress论坛程序安装测试 9、CA证书服务器及ssl配置 10、phpmyadmin安装测试 11、php的opcache加…

Slog34_支配vue框架初阶项目之博客网站-注册页面-前后端的数据交互

ArthurSlogSLog-34Year1GuangzhouChinaAug 10th 2018GitHub掘金主页简书主页segmentfault沉睡的狮子 即将醒来 而世界将为之震撼 开发环境MacOS(High Sierra 10.13.5) 需要的信息和信息源: HTTP概述HTTP互联网是如何工作的万维网是如何工作的统一资源定位符(URL)什么…

浅谈web网站架构演变过程

原文:浅谈web网站架构演变过程前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变。 该系统具备的功能:用户模块:用户注册和管理商品模块:商品展示和管理交易模块:创建交易和…

网站备案知多少

网站备案知多少 DBAplus社群 2016-09-13 21:00:13 首先谈谈为什么要备案据工信部规定,使用大陆境内服务器的组织或个人,若要使用独立域名开办网站 ,就需要履行备案手续。就像开公司要去工商局申请执照一样,在国内,没有…

GoTxt网页内容提取器,可提取小说网,360doc网站的文字

为什么80%的码农都做不了架构师?>>> 以前写的一个网站文本提取器,很粗的,最近没时间改,把源码和jar文件分享出来 程序运行截图: 代码地址:https://github.com/doobo/GoTxt 转载于:https://my.o…

大型分布式网站架构技术总结:高性能+高可用+可扩展+可伸缩架构

本文是大型分布式网站架构的技术总结,文末有分布式架构设计33精讲资料~ 一、大型网站架构特点 用户多,分布广泛 大流量,高并发 海量数据,服务高可用 安全环境恶劣,易受网络攻击 功能多,变更快,频…

邪恶花网站邪恶花_相关的子查询是“邪恶的”和“缓慢的”。 还是他们?

邪恶花网站邪恶花SQL中一个常见的神话是,相关子查询是邪恶且缓慢的。 例如,此查询在这里: SELECT first_name, last_name,(SELECT count(*) FROM film_actor fa WHERE fa.actor_id a.actor_id) FROM actor a它“强制”数据库引擎运行以下形…

如何把自己的wordpress网站移到本地修改

有时候wordpress更换模板时,需要修改的地方很多,而且在线修改不是很好。只能把它移动到电脑本地进行修改了。这样修改好就可以直接套用到网站上了。 1、通过服务器控制面板或FTP整站打包,发送到你已经在电脑本地搭建ApachePHPMySQL环境的网站…

网站pv uv 停留时间 等统计

为什么80%的码农都做不了架构师?>>> 日志中心收集网站访问数据内容 基于nginx记录用户cookie的行为,进行分析 一、用户cookie。 需要创建3个cookie文件_gtra、_gtrb、_gtrc,其中_gtra用来追踪用户,_gtrb和_gtrc联合来…

手机网站的注意事项

2019独角兽企业重金招聘Python工程师标准>>> 一.web app 手机网站的注意事项: 1.安卓浏览器看背景图片,有些设备会模糊--> devicePixeRatio手机分辨率过小造成,解决方法使用2倍背景图代替img标签. 2.图片加载很慢--> 手机开发一般用canvas方法加载 3.手机端不…

《流量的秘密 Google Analytics网站分析与商业实战》一1.3 Google Analytics的地位

本节书摘来自异步社区《流量的秘密 Google Analytics网站分析与商业实战》一书中的第1章,第1.3节,作者 【英】Brian Clifton,更多章节内容可以访问云栖社区“异步社区”公众号查看 1.3 Google Analytics的地位 你的网站对你来说是极其重要的…