Я разработал фреймворк для предоставления некоторых веб-сервисов, основанных на отдыхе. Базовые классы выглядели так (не точный код)
public interface WSService {
public void init(WSRequest request);
public List<String> validate();
public void performAction();
public WSResponse generateResponse();
}
Каждый новый сервис реализует этот веб-сервис и реализует свою особую логику
public class WSOrders implements WSService {...}
Затем я реализовал WSProcessor
, который принимает определенный класс, а затем выполняет методы и выполняет проверки ошибок / и т.д. например
@RestResource(GET, "/getorders")
public Response getOrders (...){
WSService getOrders = new WSOrders();
WSRequestProcessor processor = new WSRequestProcessor(restInput);
processor.process(getOrders);
}
в WSRequestProcessor
, я использовал метод процесса, чтобы сначала извлечь входные данные из запроса покоя, выполнить проверку уровня приложения (проверка некоторых заголовков и т. Д.). Тогда называемые методы, как это
public WSRequestProcessor{
...
public void process (WSService service){
service.init()
service.validate();
service.performAction();
service.generateResponse();
}
}
Следует отметить, что WSRequestProcessor
обрабатывает всю обработку исключений, создание общих сообщений об ошибках и т. Д.
Этот шаблон сработал довольно хорошо, чтобы раскрыть нам любой ресурс. В конце концов, чтобы раскрыть любой ресурс, все, что мне нужно (или любому разработчику), было создать WS<ResourceName>
и реализовать там свою бизнес-логику.