恐怕我无法在 Scala 前端提供任何东西,但就 Java 而言,您应该将新服务视为位于应用程序的服务层,而 REST/SOAP/Whatever 服务的接口是在 Web/Servlet 层中定义。
因此,假设您的 com.myco.services 包中有如下服务:
public interface PersonService {
public Person createPerson(PersonIdentifier id, PersonType type);
public Person retrievePerson(PersonIdentifier id);
public void updatePerson(Person existingPerson);
public void deletePerson(Person existingPerson);
public boolean authenticatePerson(String personName, String password);
}
我们会认为你有一个 PersonServiceImpl 实现来更新你的数据库或其他任何东西。在同一 JVM 上的应用程序中,您可以将 PersonServiceImpl 注入代码并直接调用方法,而无需编组或解组参数。
在 Web 层中,您可以有一个单独的 PersonServiceController,它映射到您的 servlet 中的 URL。当像“http://myco.com/person/update”这样的 URL 被点击时,请求的主体可以像这样传递给控制器:
public class PersonServiceController {
private final PersonService personService; // Inject PersonServiceImpl in constructor
...
public void updatePerson(String requestBody) {
Person updatedPerson = unmarshalPerson(requestBody);
this.personService.updatePerson(updatedPerson);
}
...
}