Извлечение и интеграция данных веб-сервисов в модели Grails - PullRequest
0 голосов
/ 26 февраля 2012

Я хотел знать, как можно аккуратно и модульно справиться со следующей ситуацией, используя Grails:

У меня есть некоторые данные в локальной БД (скажем, Книги, Авторы, Обзоры), и мне нужно улучшить эти данные информацией, поступающей с одного или нескольких внешних WS. Возможны разные сценарии:

  1. Улучшение свойств объекта (например, у меня нет года публикации Книги в базе данных, поэтому мне нужно получать его от WS каждый раз, когда пользователь хочет Книгу)
  2. Объединение сущностей, поступающих из БД и из WS (например, для каждой Книги у меня есть несколько обзоров на локальном компьютере, но я могу получить их больше из внешних WS)

Как лучше всего справиться с этой проблемой в Grails?

1 Ответ

0 голосов
/ 27 февраля 2012

Вопрос немного широк (мы не знаем, какие веб-сервисы вы пытаетесь использовать), но, думаю, я бы сказал:

  • Используйте groovyWS для каждого использованного веб-сервиса, если они основаны на SOAP, или используйте RestClient , если они RESTful (вы можете использовать плагин Rest , если хотите , но, похоже, какое-то время оно не обновлялось ...)
  • Создайте сервис Grails для обработки логики запросов как локальной базы данных, так и веб-сервисов ... делая что-то вроде:

    class BookService {
    
        def bookWS
    
        def findByAuthor = { author ->
            def books = []
            // From local db
            books << Book.findAllByAuthor(author);
    
            // From a webservice 
            books << bookWS.findBooksByAuthor(author);
            return books
        }
    
    }
    
  • Использовать мой локальный книжный сервис в действиях моего контроллера

    class BookController {
        def bookService
    
        def list() {
            def author = Author.findByName(params.author)
            [allBooks : bookService.findByAuthor(author)]
        } 
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...