作者:Andrea Di CesareMaurizio Turatti

RESTHeartSoftInstigate公司创建并开发的开源项目。

MongoDB的WEB操作接口

RESTHEART是MongoDB的WEB操作接口,启动RESTHeart就能通过WEB纯净、安全、完整的RESTful接口来打开MongoDB。

RESTHeart利用MongoDB面向文档的特性,创建一个可通过Http访问的外部资源和MongoDB内部数据存储的自动映射,实现了一个通过HATEOAS(Hypermedia as the Engine of Application State超媒体作为应用状态的引擎)代理相互兼容的模型,客户端使用的状态是完整的被http动作驱动的例如:GET、POST、PUT、PATCH、DELETE等等.

                                - https://en.wikipedia.org/wiki/RESTHeart

特性

  • 可以在不需要任何编码的情况下被使用轻量级的服务器接口
  • 完全遵守HTTP, JSON, RESTful, HAL,  JSON Schema标准
  • 通过已经准备好的身份管理和基于角色的访问管理实现可插入式的身份认证和授权
  • 数据操作接口:create, read, update, delete and query documents
  • 在每个写操作中支持点符号更新操作
  • 批量操作(再一次请求中创建,更新,删除多条文档数据)
  • 在文件存储中支持二进制数据
  • 聚合操作同时支持map reduce和aggregation pipeline
  • 数据级别操作接口可以创建数据库、集合和索引
  • 通过JSON Schema进行数据格式验证
  • WebHook可以在request结束后调用其它web资源
  • 可以定义文档自动包含超链接映射引用数据的关系
  • 在请求中容易的应用转换检查逻辑
  • 提供静态资源(例如html和js)和自定义应用逻辑
  • 支持浏览器web缓存和通过Etag避免重复提交
  • 跨域资源共享CORS
  • 通过内嵌HAL browser 在浏览器中浏览您的数据

做了什么

RESTHEART无缝的连接到MongoDB安全的在web上暴露出了数据库和集合。

所有被授权过(授权与认证已经被做成了开箱即用的方式)的客户端都可以通过RESTHeart的接口与MongoDB互动。

文档数据可以被GET动作读取,可以被PUT、POST和PATCH动作创建和修改,可以通过DELETE动作被删除

数据以JSON的格式被交换(实际上是标准的hal+json的mediatype)

hal是一种在你的接口中为资源数据赋予超链接的一致和简单的格式。

下面这个图片描绘了一个简单的应用场景。一个博客应用客户端发送一个GET请求/blog/posts 以分页形式获取回复数据。

如果你有问题?

如果你有任何问题要问,可以去 Github issues或者Stackoverflow里提问或寻找答案。

源码

RESTHeart基于JAVA8开发,运行于Undertow HTTP服务器的顶层,所有源码可以在Github上找到。

原文地址:(https://softinstigate.atlassian.net/wiki/display/RH/Home)。转载请注明出处

RESTheart官方文档的更多相关文章

  1. 【AutoMapper官方文档】DTO与Domin Model相互转换(上)

    写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...

  2. 2DToolkit官方文档中文版打地鼠教程(三):Sprite Collections 精灵集合

    这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...

  3. 2DToolkit官方文档中文版打地鼠教程(二):设置摄像机

    这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...

  4. 2DToolkit官方文档中文版打地鼠教程(一):初始设置

    这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...

  5. 【AutoMapper官方文档】DTO与Domin Model相互转换(中)

    写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...

  6. 【AutoMapper官方文档】DTO与Domin Model相互转换(下)

    写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...

  7. Ionic2系列——Ionic 2 Guide 官方文档中文版

    最近一直没更新博客,业余时间都在翻译Ionic2的文档.之前本来是想写一个入门,后来觉得干脆把官方文档翻译一下算了,因为官方文档就是最好的入门教程.后来越翻译越觉得这个事情确实比较费精力,不知道什么时 ...

  8. Kotlin开发语言文档(官方文档)-- 目录

    开始阅读Kotlin官方文档.先上文档目录.有些内容还未阅读,有些目录标目翻译还需琢磨琢磨.后续再将具体内容的链接逐步加上. 文档链接:https://kotlinlang.org/docs/kotl ...

  9. 一起学微软Power BI系列-官方文档-入门指南(1)Power BI初步介绍

    我们在前一篇文章微软新神器-Power BI,一个简单易用,还用得起的BI产品中,我们初步介绍了Power BI的基本知识.由于Power BI是去年开始微软新发布的一个产品,虽然已经可以企业级应用, ...

随机推荐

  1. 进程环境之main函数

    C程序总是从main函数开始执行.main函数的原型是: int main( int argc, char *argv[] ); 其中,argc是命令行参数的数目,argv是指向参数的各个指针所构成的 ...

  2. 如何去除CISCO交换机中的口令??

    加电后按住交换机前面的那个按钮 灯不闪了以后松手这时交换机会进入switch:模式输入命令 flash然后 dir flash:你会发现有个 config.text 的文件 你的密码和配置都保存在那里 ...

  3. Git使用完全解析(一)

    是时候来系统的介绍一下Git了.毫无疑问,Git是目前最优秀的分布式版本控制工具,木有之一,可是我见到的很多人还是不会用,我的老东家每天忍受着SVN带来的痛苦,却迟迟不愿切换到Git上,个人感觉,许多 ...

  4. 玩转Android之Drawable的使用

    Drawable天天用,可你是否对Drawable家族有一个完整的认知?今天我们就来系统的学习一下Drawable的使用. 1.概述 用过Drawable的筒子都知道Drawable有很多种,有的时候 ...

  5. .Net设计模式_工厂模式(3)

    3.抽象工厂模式 引言: 我们知道汽车需要很多部件才能组装成一辆成品的车,那么我们需要汽车厂生产很多东西,如:马达.车轴.轮胎等,这些东西组装起来后成为了一辆车. 这些东西就是产品族,图解:(出之ht ...

  6. Android 自定义View修炼-Android 实现自定义的卫星式菜单(弧形菜单)View

    一.总述 Android 实现卫星式菜单也叫弧形菜单的主要要做的工作如下:1.动画的处理2.自定义ViewGroup来实现卫星式菜单View (1)自定义属性       a. 在attrs.xml中 ...

  7. apktool重打包签名后安装出现“Failure [INSTALL_FAILED_ALREADY_EXISTS]”

    一般修改.签名环节不出错的话,可以考虑看是不是包名重复的问题,如果系统中存在相同包名的应用,安装时会报这个错误 就算apk名字变了,但和原来的包名仍是一样的,所以先卸载掉系统里同包名的应用,再尝试安装 ...

  8. 通用的 makefile 小工具分享 - Easymake 使用说明

    Easymake 使用说明 介绍 Easymake 是一个在linux系统中 C/C++ 开发的通用 makefile.在一个简单的 C/C++ 程序中使用 easymake,你甚至可以不写一行 ma ...

  9. js 如何创建一个对象

    有两种简单方法可以创建一个空对象: var obj = new Object(); 和: var obj = {}; 这两种方法在语义上是相同的.第二种更方便的方法叫作“对象字面量(object li ...

  10. js如何打印object对象

    js调试中经常会碰到输出的内容是对象而无法打印的时候,光靠alert只能打印出object标示,却不能打印出来里面的内容,甚是不方便,于是各方面整理总结了如下一个函数,能够将数组或者对象这类的结果一一 ...