Подключение и конфигурирование#
Взаимодействие с сервисом происходит по REST-протоколу. Для поиска адреса по справочнику ФИАС и вывода результата используются POST-запросы. Запрос и ответ формируются в формате JSON. Описание параметров запроса и ответа, а также примеры использования API приведены в документе «Быстрый старт».
Настройки компонентов программного компонента#
Настройка компонента addresses-finder осуществляется на этапе установки FIAS. Список настраиваемых параметров приведен в разделе Настраиваемые параметры Руководства по установке.
Дополнительных настроек не требуется.
Настройка взаимодействия на базе спецификаций OpenAPI#
API доступа к проекту предоставляется в виде OpenAPI-контракта.
Java-API генерируется на базе поставляемого совместно с дистрибутивом OpenAPI-контракта, при помощи плагина OpenAPI:
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
</plugin>
Выполнение пользовательского поискового запроса#
Подтяните URL сервиса FIAS одним из следующих способов:
с помощью глобальной переменной
global.ose.platform.fias.rest.client.base.url;с помощью запроса к сервису CFGA;
с помощью панели администратора среды контейнеризации в разделе ConfigMap.
Пример подключения через глобальную переменную
{
"name": "ufs.baseurl.fias",
"description": "URL сервиса FIAS, например, <protocol>://<host>:<port>",
"isList": false,
"roles": [
"ManageParameters.ParameterRole.System"
],
"type": "STRING",
"bundle": [
{
"path": [],
"values": [
"${global.ose.platform.fias.rest.client.base.url}"
]
}
]
}
Пример подключения через сервис CFGA
@Autowired
private ExtendedConfigService extendedConfigService;
private ParameterValue getSupValue(String value) {
ConfigRequest configRequest = ConfigRequest.configRequest(value, pathItemList);
return extendedConfigService.getParameters(configRequest).getOne(configRequest);
}
...
public String getStringParameter(SupParameter supParameter) {
ParameterValue parameterValue = getParameter(supParameter.getParameterName());
if (parameterValue != null && parameterValue.getString().isPresent()) {
return parameterValue.getString().get();
} else {
return (String) supParameter.getDefaultValue();
}
}
Выполните запрос к сервису.
Пример запроса при однострочном поиске
private final static String addresses_url = getStringParameter("ufs.baseurl.fias") + "/addresses-finder/api/v1/1/search";
@RequestMapping(value = "/test-one-line", produces = "application/json", method = RequestMethod.GET)
public SuggestionResponse doOneLineSearch() {
HttpEntity<HintRequest> request = new HttpEntity<>(getOneLineHintRequest(), getOneLineSearchHeaders());
ResponseEntity<Object> response = restTemplate.postForEntity(addresses_url, request, Object.class);
Map body = (Map) response.getBody();
Object value = Objects.requireNonNull(body).get("body");
SuggestionResponse resp = mapper.map(value, SuggestionResponse.class);
return resp;
}
private HintRequest getOneLineHintRequest() {
HintRequest hintRequest = new HintRequest();
hintRequest.setQuery("ненецкий село халявсавэй улица ненецкая");
hintRequest.setCount(1);
hintRequest.setAbbreviatedAttribute(false);
hintRequest.setSearchByFirstWord(false);
return hintRequest;
}
private HttpHeaders getOneLineSearchHeaders() {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
return headers;
}
Пример запроса при трехстрочном поиске
private final static String addresses_url = getStringParameter("ufs.baseurl.fias") + "/addresses-finder/api/v1/1/search";
@RequestMapping(value = "/test-three-step", produces = "application/json", method = RequestMethod.GET)
public SuggestionResponse doThreeStepSearch() {
HttpEntity<HintRequest> request = new HttpEntity<>(getThreeStepHintRequest(), getThreeStepSearchHeaders());
ResponseEntity<Object> response = restTemplate.postForEntity(addresses_url, request, Object.class);
Map body = (Map) response.getBody();
Object value = Objects.requireNonNull(body).get("body");
SuggestionResponse resp = mapper.map(value, SuggestionResponse.class);
return resp;
}
private HintRequest getThreeStepHintRequest() {
HintRequest hintRequest = new HintRequest();
hintRequest.setAddressKind(HintRequest.AddressKindEnum.REGION);
hintRequest.setCount(1);
hintRequest.setQuery("ненец");
hintRequest.setAbbreviatedAttribute(false);
hintRequest.setSearchByFirstWord(false);
return hintRequest;
private HttpHeaders getThreeStepSearchHeaders() {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
return headers;
}
Пример запроса при поиске по FIAS_GUID
private final static String addresses_url = getStringParameter("ufs.baseurl.fias") + "/addresses-finder/api/v1/1/search_fiasid";
@RequestMapping(value = "/test-fias-guid", produces = "application/json", method = RequestMethod.GET)
public SuggestionResponse doFiasGuidSearch() {
HttpEntity<FiasGuidHintRequest> request = new HttpEntity<>(getFiasGuidHintRequest(), getFiasGuidHeaders());
ResponseEntity<Object> response = restTemplate
.postForEntity(addresses_url, request, Object.class);
Map body = (Map) response.getBody();
Object value = Objects.requireNonNull(body).get("body");
SuggestionResponse resp = mapper.map(value, SuggestionResponse.class);
return resp;
}
private FiasGuidHintRequest getFiasGuidHintRequest() {
FiasGuidHintRequest fiasGuidHintRequest = new FiasGuidHintRequest();
fiasGuidHintRequest.setFiasGuid("42dbbbde-8003-42f4-bd51-ae3ef137fc41");
fiasGuidHintRequest.setCount(1);
fiasGuidHintRequest.setAbbreviatedAttribute(false);
return fiasGuidHintRequest;
}
private HttpHeaders getFiasGuidHeaders() {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
return headers;
}