【发布时间】:2011-06-01 11:44:34
【问题描述】:
场景 1
在我的 Web 应用程序中,说有一个用于将员工添加到系统的屏幕。一旦用户输入员工姓名后,它会根据一些逻辑自动生成员工代码(即下一个字段),并且已经存在数据库中的记录。
现在我想公开这个应用程序的 REST API,以便第三方开发人员可以在它之上构建。因此,我将有一个名为 /Employee 的资源,它将响应 GET、PUT 和 DELETE 动词。但是当客户端需要自动填充代码时,这是一个 GET 操作,它将在什么资源上?我应该创建一个新资源/EmployeeCodeFor/{Name} 还是应该在/Employee/{Name}/GenerateCode 上获得它?如果我使用/Employee/{Name}/GenerateCode,那么我的资源如何获取、放置和删除Employee,即实际上是/Employee/{Id}?
场景 2
在这里,让我们以 stackoverflow 帖子为例。所以可以说资源是/Post/{Id}。与前面的示例一样,只要我跳出Title 字段,它就会列出可能的重复问题。
我应该再次在哪个 URL 上获得那些可能的重复项?
我现在想不出更多的场景。但是在现实生活中的应用程序开发中可能会出现很多这样的场景。如何以 RESTful 方式实现它们?
方案 1 的更新
Code 和 Id 是两个不同的字段。 id是主键,代码可以跨部门重复,只是为了说明。同样要生成代码,应首先提供名称。因此,如果用户键入名称“FirstName LastName”,则服务器可能会生成 FL003 作为代码,假设在所述部门中已经有两个员工的名字从 F 开始,姓从 L 开始。可以根据登录用户识别部门。
【问题讨论】: