MongoDB 入门教程系列之三:使用 Restful API 操作 MongoDB

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: MongoDB 入门教程系列之三:使用 Restful API 操作 MongoDB
+关注继续查看

本教程的前两篇文章,分别介绍了如何使用 Node.js,普通的 Java 应用以及 SpringBoot 应用对 MongoDB 进行读写访问。

本文介绍另一种采取 Restful API 的方式来操纵 MongoDB.

使用 SpringBoot 开发 Restful API 对 MongoDB 进行读写访问

通过 Spring Boot 构造出 Restful API,这样可以直接在浏览器里通过调用 Restful API,对 MongoDB 进行增删查改了。

image

先看按照本教程介绍的步骤,实现的最终效果。

假设我本地 MongoDB 的数据库里有一张表 book,只有一条记录,id 为 1.

image

通过浏览器里的这个 url 根据 id 读取该记录:http://localhost:8089/bookmanage/read?id=1

image

采取如下 url 进行记录的创建:

http://localhost:8089/bookmanage/create?id=2&name=Spring&author=Jerry

image

image

记录搜索操作的 url:http://localhost:8089/bookmanage/search?name=*

image

记录的删除:删除 id 为 2 的记录

http://localhost:8089/bookmanage/delete?id=2

image

下面是上述功能的实现细节。

  1. 创建一个新的 controller,位于文件夹 src/main/java 下。

image

这个 controller 加上注解 @RestController.


@RestController 注解相当于 @ResponseBody 和 @Controller 这两个注解提供的功能的并集。


这里有一个知识点就是,如果用注解 @RestController 定义一个 Controller,那么这个 Controller 里的方法无法返回 jsp 页面或者 html 页面,因为 @ResponseBody 注解在起作用。所以即使配置了视图解析器 InternalResourceViewResolver 也不会生效,此时返回的内容就是 @RestController 定义的控制器方法里返回的内容。


image

  1. 以读操作为例,通过注解 @GetMapping 定义了读操作 Restful API 的 url 为bookmanage/read.

@RequestParam 定义了 url:bookmanage/read 后面的参数为 id 或者 name.

读操作最终将会使用我们之前介绍过的 Java 访问 MongoDB 的方法,即通过@Autowired 注入的 BookRepository 实例完成对 MongoDB 的操作。

image

  1. 创建操作的源代码:
@GetMapping("/bookmanage/create")
public Book create(
@RequestParam(value="id", defaultValue="") String id,
@RequestParam(value="name", defaultValue="noname") String name,
@RequestParam(value="author", defaultValue="noauthor") String author
){
     Book book = repository.save(new Book(id,name,author));
     return book;
}

image

  1. 删除操作的源代码:
@GetMapping("/bookmanage/delete")
public boolean delete(
@RequestParam(value="id", defaultValue="") String id
){
    //if no record
     if(repository.findById(id)==null)
           return false;
     // do database delete
     repository.deleteById(id);
    return true;
}

image

如何在 SAP 云平台上使用 MongoDB

我想在 SAP 云平台的 Cloud Foundry 环境下使用 MongoDB 服务,但是在 Service Marketplace 上找不到这个服务。

image

命令行 cf marketplace 返回的结果也没有 MongoDB 相关的服务:

image

解决方案

退回到 SAP 云平台的 Global Account,点击 Entitlement,发现没有给 Subaccount 分配 MongoDB:

image

Quota 分配成 1,保存即可。

image

再回到 organization 的 space 下面,发现现在 MongoDB 服务已经处于可用状态了。

image

命令行 cf marketplace 现在能够看到 MongoDB 服务的版本了:

image

下面是在 SAP 云平台 CloudFoundry 环境使用 MongoDB 服务的详细步骤。

  1. 使用命令行 cf marketplace 查看当前 SAP 云平台的 MongoDB 服务的版本号:在我使用的 SAP 云平台上是 v3.0-dev:

image

使用如下命令行创建一个服务实例:

cf create-service mongodb v3.0-dev mongo-service

image

  1. 到 Java 项目根目录下,使用命令行 mvn package:

image

能看到如下的输出:

image

image

该命令会生成一个 hcp-cf-mongodb-tutorial-1.0-SNAPSHOT.jar

image

  1. 编辑 manifest.yml,指定部署到 SAP 云平台上的程序名称:

image

  1. 使用命令行 cf push进行部署。

部署成功后,在 Cockpit 里能看到该应用处于 Started 状态:

image

image

image

浏览器访问该应用,能看到如下输出:

image

该输出是 Java 项目里的 RootController 生成的:

image

最后我们对 SAP UI5 Repository 和 MongoDB Repository 进行比较,作为本系列的结尾。

UI5 Repository

从本地通过 Eclipse team provider 上传到 ABAP gateway system 的 UI5 应用,都会自动生成一个 UI5RepositoryPathMapping.xml 文件,里面记录的是 debug version 的脚本文件名称和路径的映射关系。如下图所示:

image

控制这个映射文件的访问工具类 manipulation utility 的名称:

UI5/CL_UI5_REP_PATH_MAPPER

SpringBoot 应用里的 MongoDB Repository

和 ADBC 与 JDBC 不同,通过 MongoDB Repository 访问 MongoDB 数据库,并不会在代码中出现用字符串拼接的 SQL 语句:

image

例如我们查看 findByName 的定义:

image

findByName 的实现:第 20 行代码构造一个 Query 实例,然后将其传入 21 行 mongoTemplatefind 方法:

image

总结

本文首先介绍了如何使用 SpringBoot 应用开发 Restful API,从而能够在浏览器里就能对 MongoDB 的读写操作进行测试,接着介绍了如何在通用的云平台 CloudFoundry 环境里消费 MongoDB 服务。

本教程前两篇文章:

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
1天前
|
分布式计算 Java 大数据
大数据 | Java 操作 HDFS 常用 API
大数据 | Java 操作 HDFS 常用 API
17 0
|
2天前
|
存储 Java API
ZooKeeper【客户端的API操作、写数据流程】
ZooKeeper【客户端的API操作、写数据流程】
|
24天前
|
消息中间件 API 数据安全/隐私保护
使用 REST API 操作 RabbitMQ(二)
使用 REST API 操作 RabbitMQ
|
24天前
|
消息中间件 JSON API
使用 REST API 操作 RabbitMQ(一)
使用 REST API 操作 RabbitMQ
|
28天前
|
Linux 程序员 API
LINUX系统API---操作目录
LINUX系统API---操作目录
29 0
|
2月前
|
XML 缓存 JavaScript
JavaScript操作DOM常用的API
什么是DOM 文档对象模型 (DOM) 是HTML和XML文档的编程接口。它提供了对文档的结构化的表述,并定义了一种方式可以使从程序中对该结构进行访问,从而改变文档的结构,样式和内容。文档对象模型 (DOM) 是对HTML文件的另一种展示,通俗地说,一个HTML 文件,我们可以用编辑器以代码的形式展示它,也可以用浏览器以页面的形式展示它,同一份文件通过不同的展示方式,就有了不一样的表现形式。而DOM 将文档解析为一个由节点和对象(包含属性和方法的对象)组成的结构集合。简言之,它会将web页面和脚本或程序语言连接起来,我们可以使用脚本或者程序语言通过DOM 来改变或者控制web页面。
|
2月前
|
关系型数据库 MySQL API
Go语言微服务框架 - 6.用Google风格的API接口打通MySQL操作
随着RPC与MySQL的打通,整个框架已经开始打通了数据的出入口。 接下来,我们就尝试着实现通过RPC请求操作MySQL数据库,打通整个链路,真正地让这个平台实现可用。
12 0
|
3月前
|
JavaScript 前端开发 API
SAP UI5 应用如何采取 JavaScript 代码调用 OData API 读取满足过滤条件的业务数据($filter 操作)试读版
SAP UI5 应用如何采取 JavaScript 代码调用 OData API 读取满足过滤条件的业务数据($filter 操作)试读版
35 0
|
3月前
|
JSON API 开发工具
|
4月前
|
存储 缓存 Java
简化持久化操作:深入了解 JPA(Java Persistence API)
在现代的应用程序开发中,数据库持久化操作是一个常见的需求,因此使用一种方便、标准的方式来进行持久化操作非常重要。JPA(Java Persistence API)作为一项 Java 标准,提供了一种标准化的方式来进行对象关系映射(ORM)操作,使得持久化操作更加便捷和规范。在本文中,我们将详细介绍 JPA 的核心概念、特性以及在实际应用中的优势。
92 0
相关产品
云迁移中心
推荐文章
更多