我有一个软件我必须" 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。但是在我得到评估结果并且意见令人满意之前我不想坚持一个潜在客户(所以潜在客户成为客户)。
在这种情况下,什么是一个好的RESTful API设计?
答案 0 :(得分:1)
嗯,你肯定不想毫无理由地引入持久性。你可能应该处理这类似于在restful API中处理搜索的方式。类似的东西:
GET /mysoftwareapi/v0/evaluations?firstName=blablabla&lastName=blabla...
或者,如果参数太大或太敏感而无法粘贴在URL中:
POST /mysoftwareapi/v0/evaluations
使用实体主体中的参数。
它是RESTful吗?好吧,至少URL是名词。
这可以成为诚实至善的Roy Fielding REST API的一部分,具体取决于客户端软件如何使用它以及它返回的内容......但真正的REST API并不是人们想要的当他们说他们想要REST API时,不要太过分。没关系:)