使用REST API操作MongoDB(一)
来源:互联网 发布:全知之眼漫画 编辑:程序博客网 时间:2024/05/29 04:31
使用REST API, 我们能够通过HTTP请求来对MongoDB进行CRUD操作. REST API对于我们的应用来说就是一个无状态的接口, 对于MEAN技术栈来讲, REST API的地位是创建一个暴露一个操作数据库的无状态接口, 供其他应用操作数据库的数据.
设计REST API的请求处理部分
REST API功能
通常, 我们希望借助REST API完成以下操作
- 创建一个新记录
- 读取一个list的记录
- 读取指定的记录
- 更新指定记录
- 删除指定记录
假如我们现在要创建的是地址记录, 假定我们要使用的URL路径是/locations
, 那么各个操作对应到URL
路径之后如下表所示
通过上表可以看出, 多个不同的动作可能对应的是相同的URL路径, 那么如何进行动作的区分呢? 答案是通过HTTP请求类型来判断.
HTTP请求类型
通常, REST API使用到四种HTTP请求, 它们的用途和相应如下所示
结合HTTP请求类型和URL路径确定唯一的操作
使用REST API操作子文档
以上介绍都是REST API操作父文档, 如果想操作子文档, 首先需要获取到父文档, 也就是如上表中的http://example/api/locations/123这样的路径, 现在假定每个location
文档中还内嵌了名为reviews
的子文档, 那么它所对应的操作如下
reviewId http://example/api/locations/123/reviews/abc 更新指定记录 PUT /locations/locationId/reviews locationId
reviewId http://example/api/locations/123/reviews/abc 删除指定记录 DELETE /locations/locationId/reviews locationId
reviewId http://example/api/locations/123/reviews/abc
注意, 子文档的操作并没有一个读取list的操作, 因为这个操作可以通过对父文档操作进行实现.
设计REST API响应(Response)和状态码
REST API的另一部分就是响应的设计, 响应一般来说包含两个部分:
- 返回数据
- HTTP状态码
对于返回数据, 通常是JSON或者XML类型的, 这里我们选择JSON类型, 因为它比XML数据更加紧凑, 并且天然适应MEAN技术栈. 对于每个请求, 返回数据都应该有三种类型:
- 包含正确返回的被请求数据的JSON对象
- 包含错误信息的JSON对象
- null响应
常用的HTTP状态码
HTTP状态码通常是用来和响应一同返回的, 用于表明HTTP请求的执行情况.
常用的HTTP状态码共有10种
GET
或者PUT
请求成功 201 Created POST
请求成功 204 No content DELETE
请求成功 400 Bad request GET
, PUT
或者POST
请求由于内容不符合标准而失败 401 Unauthorized 身份验证未通过 403 Forbidden 不允许的请求 404 Not found 请求的URL没有资源或者参数错误 405 Method not allowed 指定的URL不允许此种请求类型 409 Conflict POST
失败, 试图插入重复数据 500 Internal server error 服务器或数据库故障在Express中建立响应API
使REST API不与应用的其他处理逻辑混杂, 所以这里我们单独对其进行管理.
首先, 在应用的根目录新建一个app_api
目录, 这个目录将会包含routes
, controllers
, models
(注意并没有views
)
创建REST API路由
首先创建根路由, 也就是index.js
, 并将其加载到app.js
中,
var index = require('./app_server/routes/index');// 以下是新增的路由var apiIndex = require('./app_api/routes/index');app.use('/', index);// 以下是新增的路由app.use('/api', apiIndex);
TODO 未完待续
- 使用REST API操作MongoDB(一)
- elasticsearch rest api操作
- Elasticsearch简单使用系列--使用Rest API进行CRUD操作
- 使用cURL操作Openstack对象存储的ReST API
- 使用cURL操作Openstack对象存储的ReST API
- REST API 使用
- magento中自己的模块使用 REST API (一)
- mongodb 自带 http REST API
- neo4j REST API 节点操作
- 手动操作 Neutron REST API
- etcd rest api基本操作
- (一)REST API概念
- JIRA REST API(一)
- 使用Node.js和MongoDB通过Mongoshin和Express.js构建JSON REST API服务器
- 使用 web.rest 调用 REST API
- 使用 Rest-Assured 测试 REST API
- Mongodb学习一,开始使用C# Driver操作Mongodb
- 转 -- 使用 Twitter REST API
- Android—初识NDK
- 1小时教你理解HTTP,TCP,UDP,Socket,WebSocket
- 怎么用MindManager制作鱼骨图
- HTML5基础加强css样式篇(text-align,text-decoration,text-indent,text-transform,letter-spacing,word-spacin)(四)
- 通向架构师的道路(第十四天)Axis2 Web Service安全之rampart
- 使用REST API操作MongoDB(一)
- 【Oracle学习】之 配置监听器 和 TNSName
- 内存溢出和内存泄漏的区别
- fragment进阶
- Mac OS 能前置窗口 de Afloat插件
- AAA云免费云主机推荐码
- 域名访问项目
- IOS10.2.1无法播放微信小视频的解决方案
- 使用Akka持久化——持久化与快照