不作用于资源的操作的 RESTful 设计解决方法



我有一个软件,我必须"APIfy"。该软件是用 COBOL 编写的,并在大型机上运行,只有一个入口点。该系统的目标是通过进行风险评估来评估潜在客户。它以一些客户信息(如SSN,名字和姓氏(为参数,向一些公共和私人实体询问商业背景,运行风险策略并给出意见。

我不知道如何为此服务设计 RESTful API(这是一项架构要求;我无法编写 RPC 服务(。我的第一次尝试是这样的:

POST mysoftwareapi/v0/evaluate

将客户数据嵌入到 HTTP 正文中。但我丢弃了那个,因为它闻起来像RPC服务(没有资源;动词而不是名词(。

然后我提出了一个两步 API 调用:

POST mysoftwareapi/v0/prospect

然后

POST mysoftwareapi/v0/prospect/evaluate

GET mysoftwareapi/v0/prospect/evaluation

它看起来更休息了一点。但是我不想在我得到评估结果并且意见令人满意之前坚持潜在客户(因此潜在客户成为客户(。

在这种情况下,什么是好的 RESTful API 设计?

好吧,你当然不想无缘无故地引入持久性。 您可能应该像在 restful API 中处理搜索的方式一样处理此问题。 像这样:

GET /mysoftwareapi/v0/evaluations?firstName=blablabla&lastName=blabla...

或者,如果参数太大或太敏感而无法粘贴到 URL 中:

POST /mysoftwareapi/v0/evaluations

使用实体主体中的参数。

是休息吗? 好吧,至少URL是一个名词。

这可以是诚实善良的Roy Fielding REST API的一部分,也可以不是,这取决于客户端软件如何弄清楚如何使用它以及它返回什么...... 但是真正的 REST API 并不是人们真正想要的,当他们说他们想要 REST API 时,所以不要太担心。 会没事的:)

最新更新