微服务架构设计 第八步: 设计微服务对外 REST API

2016.9.22, 北京, Ken Fang

开发与测试人员协作完成了: 微服务对外需提供的方法 (API) 后, 开发与测试人员便需继续协作, 将微服务对外需提供的方法 (API), 设计成 REST API。

将微服务对外需提供的方法 (API), 设计成 REST API 的主要步骤如下:

1. 将微服务中代表某个单一业务概念的实体, 识为 “Resource”。并分析 Resource 间的关系。

Resource 间的关系

Independent

在没有其他的 Resources 存在下, 也能独立存在的 Resources。

Dependent

一定要所依赖的父 Resources 存在, 才能存在的 Resources。

Associative

Resources 间是互相独立存在的, 但, 彼此间存在著 “包含” 的关系; 某个 Resource 所需额外的 Properties, 只需 Link 到另一个 Resource。

2. 将微服务中代表某个单一业务概念的实体, 对外需提供的方法 (API), 对映到 Http 的方法。

API Modeling Actions

Typical HTTP Verb

List, Search, Match, View All

GET a resource collection

GET /{collection name}

Show, Retrieve, View

Get a resource

GET /{collection name}/{id}

Create, Add

POST create a resource

POST /{collection name}

Replace

PUT update a resource collection

PUT /{collection name}

Update

PUT update a resource

PUT /{collection name}/{id}

Delete All, Remove All, Clear, Reset

DELETE delete a resource collection

DELETE /{collection name}

Delete, Remove

DELETE delete a resource instance

DELETE /{collection name}/{id}

3.       依照由步骤 1, 所分析出 Resource 间的关系, 与由步骤 2, 所对映出的 Http 的方法, 设计出 Resource 的 Endpoint。

4.       依照步骤 3, 所设计出 Resource 的 Endpoint, 设计出 Http 的 Response Codes。

SaveSaveSaveSaveSaveSaveSaveSave

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏GreenLeaves

存储过程详解

存储过程简介 什么是存储过程:存储过程可以说是一个记录集吧,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表...

18710
来自专栏散尽浮华

Mysql数据库之Binlog日志使用总结

binlog二进制日志对于mysql数据库的重要性有多大,在此就不多说了。下面根据本人的日常操作经历,并结合网上参考资料,对binlog日志使用做一梳理: 一、...

1.2K9
来自专栏腾讯数据库技术

MySQL Binlog实用攻略

本文简要介绍 binlog 原理及其在恢复、复制中的使用方法,更多深入分析可参考 mysql 官方文档。

8.4K2
来自专栏皮皮之路

【MySQL】通过Binary Log简单实现数据回滚(一)

36611
来自专栏王硕

原 PostgreSQL的基础数据类型分析记录

1031
来自专栏数据之美

关于 MySQL UTF8 编码下生僻字符插入失败/假死问题的分析

1、问题:mysql 遇到某些中文插入异常 最近有同学反馈了这样一个问题: ? 上述语句在脚本中 load 入库的时候会 hang 住,web 前端、命令行操作...

3039
来自专栏大内老A

如何让普通变量也支持事务回滚?

有一次和人谈起关于事务的话题,谈到怎样的资源才能事务型资源。除了我们经常使用的数据库、消息队列、事务型文件系统(TxF)以及事务性注册表(TxR)等,还有那些资...

1548
来自专栏跟着阿笨一起玩NET

C# 使用SqlBulkCopy类批量复制大数据

特别注意  sqlbulkcopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].Col...

871
来自专栏乐沙弥的世界

共享池中保留池的调整(shared_pool_reserved_size)

--*************************************************

691
来自专栏皮皮之路

【MySQL】通过Binary Log简单实现数据回滚(一)

1796

扫码关注云+社区