微服务架构设计 第八步: 设计微服务对外 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 条评论
登录 后参与评论

相关文章

来自专栏ChaMd5安全团队

CVE-2018-1000156:GNU Patch任意代码执行漏洞分析

GNU Patch 源码下载地址:https://ftp.gnu.org/gnu/patch/

1762
来自专栏菩提树下的杨过

jboss eap 6.2+ 版本中 加密datasource密码等敏感信息

默认情况下,在jboss eap 6.2+ 管理控制台创建datasource后,会在standalone.xml(独立模式)或host.xml(域模式)中以明...

2567
来自专栏青青天空树

springboot配置读写分离

  近日工作任务较轻,有空学习学习技术,遂来研究如果实现读写分离。这里用博客记录下过程,一方面可备日后查看,同时也能分享给大家(网上的资料真的大都是抄来抄去,,...

1423
来自专栏owent

注册表常用键值意义

[HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel]

1192
来自专栏Kurt Niu 的博客

自己编译Android(小米5)内核并刷入(一键自动编译打包)

之前自己编译过Android系统,刷入手机。编译很简单,但坑比较大,主要是GFW埋的坑。。

6083
来自专栏FreeBuf

2018最新款渗透测试框架 | Fsociety搞定各种姿势脚本

Fsociety是一款最新的渗透测试框架,可以帮助各位兄弟在安全测试过程中拥有变身成黑客所需要的各种姿势脚本。 这个工具刚刚出现,目前大概分为以下9类,后续还会...

2758
来自专栏阿杜的世界

Spring+Velocity+Mybatis整合笔记(step by step)

开发过程中使用的操作系统是OS X,关于软件安装的问题请大家移步高效的Mac环境设置。 本文是我对自己学习过程的一个回顾,应该还有不少问题待改进,例如目录的设...

791
来自专栏蓝天

编译hbase-1.2.3源代码

确保机器可以正常访问Internet,如能正常访问https://repo.maven.apache.org等,如果是代理方式则需要设置好eclipse和m...

1712
来自专栏PHP在线

重磅资料!Github上的PHP资源汇总大全

依赖管理 ——用于依赖管理的包和框架 Composer/Packagist : 一个包和依赖管理器 Composer Installers: 一个多框架Com...

3044
来自专栏菩提树下的杨过

Mybatis.Net 整合 ODP.NET Managed

初步接触MyBatis.Net的朋友,请先移步 MyBatis.Net 学习手记 1. 项目中先添加Oracle.ManagedDataAccess.dll程...

2045

扫码关注云+社区