第六
- 什么是RESTful
REST这个词,是Roy Thomas Fielding在他2000年的博士论文中提出的。翻译过来就是"表现层状态转化
2、关于hateoas:
我们知道REST是使用标准的HTTP方法来操作资源的,但仅仅因此就理解成带CURD的Web数据库架构就太过于简单了。 这种说法忽略了一个核心概念: “超媒体即应用状态引擎(hypermedia as the engine of application state)”。<u> 超媒体是什么? 当你浏览Web网页时,从一个连接跳到一个页面,再从另一个连接跳到另外一个页面,就是利用了超媒体的概念: 把一个个把资源链接起来。</u>
要达到这个目的,就要求在表述格式里边加入链接来引导客户端。在《RESTFul Web Services》一书中,作者把这种具有链接的特性成为连通性。
RESTful API最好做到Hypermedia,或HATEOAS,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。比如,当用户向api.example.com的根目录发出请求,会得到这样一个文档。
{"link": {
"rel": "collection https://www.example.com/zoos",
"href": "https://api.example.com/zoos",
"title": "List of zoos",
"type": "application/vnd.yourformat+json"
}}
上面代码表示,文档中有一个link属性,用户读取这个属性就知道下一步该调用什么API了。rel表示这个API与当前网址的关系(collection关系,并给出该collection的网址),href表示API的路径,title表示API的标题,type表示返回类型。
Hypermedia API的设计被称为HATEOAS。Github的API就是这种设计,访问api.github.com会得到一个所有可用API的网址列表。
{
"current_user_url": "https://api.github.com/user",
"authorizations_url": "https://api.github.com/authorizations",
// ...
}
从上面可以看到,如果想获取当前用户的信息,应该去访问api.github.com/user,然后就得到了下面结果。
{
"message": "Requires authentication",
"documentation_url": "https://developer.github.com/v3"
}
我当时第一眼看到HATEOAS也是一脸懵逼,因为在Spring依赖中看到过这个词,所以就留意了一下。其实在我看来,HATEOAS是符合RESTful规范的一个方面,客户端在消费RESTful服务的时候,出了得到资源本身以外,还可以得到一些相关其他信息,比如,其他相关链接,返回类型等等。
—————————— 参考 dpqqq (https://www.cnblogs.com/dpqq/)
3、 LDAP:
LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。它是基于X.500标准的,但是简单多了并且可以根据需要定制。与X.500不同,LDAP支持TCP/IP,这对访问Internet是必须的。LDAP的核心规范在RFC中都有定义,所有与LDAP相关的RFC都可以在LDAPman RFC网页中找到
LDAP的 可扩展性和灵活性:
LDAP 协议既是跨平台的也是基于标准的。这意味着几乎在任何计算机平台上运行的任何应用程序都可以从LDAP目录获取信息。另外,无论什么服务器操作系统、文件系统或平台对于客户机都是无关紧要的。
LDAP目录几乎可以存储所有类型的数据:电子邮件地址、DNS 信息、NIS 映射、安全性密钥、联系人信息列表和计算机名等。如果需要专门的组织单元或项,则可以根据具体实现来定制控制给定字段可以保存哪种信息的规则(称为模式,稍后将详细讨论)。
大多数 LDAP 服务器的安装和配置相对比较简单,并且可以在很少或没有维护的情况下运行多年,而且很容易为特定类型的访问而进行最优化。
可以容易地配置 LDAP 目录来复制部分或所有目录树(使用推(push)或拉(pull)方法)。这可以使系统管理员不必担心出现单点故障的情况。
可以通过 ACL(访问控制表,Access Control List)来控制对目录的访问。例如,管理员可以根据给定组或位置中的成员资格来限制谁可以看到哪些内容,或者给予特殊用户在其自己记录中修改所选字段的能力。ACL 提供极其细粒度的访问控制,而且 ACL 将这种控制与 LDAP 安装结合在一起,而不是与请求信息的客户机结合在一起。此外,可以容易地将 LDAP 与大多数现有的安全性层和/或认证系统(例如 SSL、Kerberos 和 PAM 等)集成在一起。
4、spring的历史与设计理念
Spring于2003年成立,是对早期J2EE规范复杂性的回应 。虽然有些人认为Java EE和Spring处于竞争中,但Spring实际上是对Java EE的补充。Spring编程模型不包含Java EE平台规范; 相反,它集成了EE保护伞中精心挑选的个别规格:
Servlet API(JSR 340)
WebSocket API(JSR 356)
并发实用程序(JSR 236)
JSON绑定API(JSR 367)
Bean验证(JSR 303)
JPA(JSR 338)
JMS(JSR 914)
以及必要时用于事务协调的JTA / JCA设置。
Spring Framework还支持依赖注入(JSR 330)和Common Annotations(JSR 250)规范,应用程序开发人员可以选择使用这些规范,而不是Spring Framework提供的Spring特定机制。
以下是Spring Framework的指导原则:
1.提供各个层面的选择。Spring允许您尽可能晚地推迟设计决策。例如,您可以通过配置切换持久性提供程序,而无需更改代码。许多其他基础架构问题以及与第三方API的集成也是如此。
适应不同的观点。Spring拥抱灵活性,并不认为应该如何做。它以不同的视角支持广泛的应用需求。
2.保持强大的向后兼容性。Spring的演变经过精心设计,可以在版本之间进行一些重大改变。Spring支持精心挑选的JDK版本和第三方库,以便于维护依赖于Spring的应用程序和库。
3.关心API设计。Spring团队花了很多心思和时间来制作直观的API,这些API在很多版本和多年中都有用。
4.为代码质量设定高标准。Spring Framework非常强调有意义的,最新的和准确的javadoc。它是极少数项目之一,可以声称干净的代码结构,包之间没有循环依赖。
5、cors:
随着GPS技术的飞速进步和应用普及,它在城市测量中的作用已越来越重要。当前,利用多基站网络RTK技术建立的连续运行(卫星定位服务)参考站(Continuously Operating Reference Stations),缩写为CORS)已成为城市GPS应用的发展热点之一。CORS系统是卫星定位技术、计算机网络技术、数字通讯技术等高新科技多方位、深度结晶的产物。 CORS系统由基准站网、数据处理中心、数据传输系统、定位导航数据播发系统、用户应用系统五个部分组成,各基准站与监控分析中心间通过数据传输系统连接成一体,形成专用网络。
实际应用: