为最终用户屏蔽通用API背后的几个API

时间:2017-01-31 18:42:23

标签: rest session-state api-design

注意:我想首先说明这个查询的性质非常普遍,因为我正在探索实现某些方法的方法,而不是试图解决特定的编码问题或问题

我正在开发一个中间件项目,它位于一组生产者(信息)和一个消费者之间。

以下是要求

1)生产者都为消费者生成数据,但拥有自己的API接口。

2)消费者并不真的想要对每个生产者的API进行编码,因此要求创建一个透明层来抽象所有生产者,并为其提供一个API接口来编码。

3)将不时添加更多的制作人。

4)每个生产者发送的信息本质上都是类似的类型(例如股票持有 - 其中包含一组已定义的共同属性)。但是,每个生产者API中的表示由他们自行决定。

5)消费者和每个生产者之间必须有安全的沟通,生产者在提供数据之前验证消费者。

我相信您可能对这些要求有疑问或需要更多说明,所以请告诉我,我会更新问题。

但是, 这里是我的问题 ,并希望这里的一些专家可以提供一些建议和指导。

A)我倾向于使用RESTful API为消费者提供JSON响应,使用后端的JAVA组件进行翻译。这将使其可扩展以增加更多的生产者(并且他们的所有怪癖和任意陈述可以从消费者中抽象出来)。你认为这是一个好主意还是你会提出另一种方法?

B)这里有一个认证和不可否认的元素。每个生产者可能有自己的方式来实现这一点 - 通过数字签名,令牌和访问代码,一次性密码发送给消费者以提供作为双因素身份验证等等。有关如何实现这一点的任何提示和标准化?我应该考虑哪些技术?

C)由于需要维护身份验证会话,这是否违反RESTful原则?

非常感谢您提供的任何帮助或反馈。

1 个答案:

答案 0 :(得分:0)

我会试着告诉你我如何解决这个问题。

  1. 从消费者开始 - 您说您将只有一个消费者,因此您可以轻松了解消费者期望的API交互类型。然后,您可以设计中间件必须公开的API草稿。这将有助于您设计和开发中间件功能。

  2. 收集所有身份验证要求 - 生成“生产者”要求的所有身份验证类型的列表,并记住每个消费者“用户”必须提供所需的所有信息适用于所有身份验证类型。

  3. Auth MIddleware - 使用从第2点获得的信息,设计一个可以管理生产者所需的所有身份验证方法的身份验证中间件。这意味着要考虑管理所有生产者凭据的方法。 此组件仅与逻辑中间件交互

  4. 逻辑中间件 - 顾名思义,管理所有组件互动

    一个。为消费者提供简单身份验证,例如简单的api令牌

    湾使用专有的域模型,这可以让您从生产者的特定领域中解放出来,尽管您说它们是一致的,并且可以帮助您更自由地设计集成功能并与所有参与者脱钩

    ℃。从消费者提供的api令牌开始使用 Auth Middleware ,以便对涉及特定业务流程的每个生产者进行身份验证

  5. 希望这可以帮到你!