Я создаю службу grails, которая будет взаимодействовать с сторонним REST API через библиотеку Java. Библиотека Java требует учетных данных для REST API с помощью URL-адреса, имени пользователя и пароля.
Я хотел бы сохранить эти учетные данные в configuration/Config.groovy
, сделать их доступными для службы и убедиться, что учетные данные доступны службе, прежде чем она потребует их.
Я ценю, что grailsApplication.config
доступен для контроллеров и что с помощью метода службы в службу могут быть предоставлены соответствующие значения конфигурации, например:
package example
class ExampleController {
def exampleService
def index = { }
def process = {
exampleService.setCredentials(grailsApplication.config.apiCredentials)
exampleService.relevantMethod()
}
}
package example
import com.example.ExampleApiClient;
class ExampleService {
def credentials
def setCredentials(credentials) {
this.credentials = credentials
}
def relevantMethod() {
def client = new ExampleApiClient(
credentials.baseUrl,
credentials.username,
credentials.password
)
return client.action();
}
}
Я считаю, что этот подход немного испорчен, так как он зависит от контроллера, вызывающего setCredentials()
. Наличие авторизованных учетных данных, доступных для службы, будет более надежным.
Является ли один из этих двух вариантов жизнеспособным (я в настоящее время недостаточно знаком с grails):
-
Вставить
grailsApplication.config.apiCredentials
в службу в контроллере при создании службы? -
Предоставить какую-либо форму конструктора в службе, которая позволяет передавать учетные данные службе в момент создания экземпляра?
Наличие учетных данных, введенных в службу, является идеальным. Как это можно сделать?