我正在为我的网络应用程序实现一个RESTfull API,它在php中。我在决定是否允许使用单个POST调用创建多个不同类型的对象时遇到了问题。我的方案如下。
- addEmployee api服务功能允许客户端通过将数据作为POST参数传递来在我的应用程序内创建员工。
- 我的系统中Employee有两个依赖关系作为Job Title和Employment Status,它们是系统中单独保存的对象。因此,客户必须传递职务名称和就业状态名称以及addEmployee POST呼叫。
- 当客户端调用addEmployee方法时,它会在内部检查系统中是否已存在给定的Job Title和Employment Status,如果是,则只为Employee对象中的那些现有对象添加引用。
- 如果系统中没有给定职位或就业状态,则addEmployee方法将首先在系统中保存职位和就业状态对象,然后在员工对象中添加引用。 < / LI>
- addJobTitle和addEmploymentStatus有单独的API函数,如果客户需要向系统添加更多作业标题和就业状态,则可以使用这些函数。
醇>
在上述工作流程中,我不确定第4步是否正确,因为客户端看不到内部保存操作,这会降低API的可见性。但可用性明智,因为客户端可以添加一个最多一次Web服务调用的员工。
我可以按如下方式更换第4步,以提高可见度。
- 如果系统中没有给定的职位或就业状态,则addEmployee方法将返回一个异常,说明系统中没有这些异常,并且该响应将提供uris to addJobTitle和addEmploymentStatus函数,允许客户端使用uris并首先保存那些职位和就业状况。保存职位和就业状态对象后,客户可以再次调用addEmployee方法,以添加具有给定职位和就业状态的员工。
醇>
第二种方法将提高API的可见性,但是性能差异和可用性使得它不会有效,因为客户端必须最多调用API 3次才能将Employee添加到系统中。
请告诉我解决此问题的方法是什么。