Определить город по IP (dadata)

Как реализовать

Создаем форму (1 колонка с кодом ip) с получаем IP из спец параметра userIP:

CREATE PROCEDURE [dbo].[fm_watch_getCityByIP_getItem]
    @itemID int,	
	@username nvarchar(256), 
    @parameters ExtendedDictionaryParameter readonly

AS
BEGIN
	declare @ip nvarchar(128) = (select Value2 from @parameters where [Key] = 'userIP')
	select @ip ip
    
    select 'h3' headerTag
END

При нажатии на кнопку делаем API запрос: 

CREATE PROCEDURE [dbo].[fm_watch_getCityByIP_saveItem]
   @username nvarchar(256), 
   @itemID int, 
   @fieldip nvarchar(256) = ''
AS
BEGIN
	-- 1 SELECT (Result, Msg)
	select 1 Result, ' ' Msg
    
    -- 2 SELECT
   select 'apirequest' type, 'dadataCityByIP' code, 'ip' p1_name, @fieldip p1_value
END

Процедура Request API запроса (формат json, метод Get): 

CREATE PROCEDURE [dbo].[api_dadataCityByIP_request]
	@parameters ExtendedDictionaryParameter READONLY,  -- входящие параметры для внутренней обработки (используйте Key, Value2)
	@username nvarchar(32)  -- текущий пользователь.
AS
BEGIN
	declare @ip nvarchar(20) = ''
    select @ip = Value2 from @parameters where [Key]='ip'
    -- SELECT 1  Msg, Result, Url (адрес, куда будет идти запрос)
	select '' Msg, 1 Result, 'https://suggestions.dadata.ru/suggestions/api/4_1/rs/iplocate/address?ip='+ @ip Url  --, 'application/json' ContentType

	-- SELECT 2 PARAMETERS - параметры, которые будут передаваться во внешний источник
    select 'Authorization' name, 'Token '+ '_________________________' value, 'header' [type] -- form (в форме передается), header (в http headers), get запросы передавайте прямо в URL  
END

Процедура Response без изменений: 

CREATE PROCEDURE [dbo].[api_dadataCityByIP_response]
	@response nvarchar(max),
	@parameters ExtendedDictionaryParameter READONLY, 
	
	@username nvarchar(32)
AS
BEGIN
	-- SELECT 1
	select '' Msg, 1 Result, @response Response
END

и JS коллбек сохранения формы для обработки ответа API: 

as.formcallbacks["watch_getCityByIP_saveItem"] = function(data){
  var ss = JSON.parse(data.additionalData)[0].items;
  console.log("API response", ss);
      	
  for (var i = 0; i< ss.length; i++){
  	var el = ss[i];
    if(el.key=="response"){
    	var ss1 = JSON.parse(el.value2);
      	var s = "";
      	if(ss1 && ss1.location){
      		var loc = ss1.location;
       	    console.log("Loc data", loc); 
          	s+="Город: " + loc.value + "<br>";
          	s+="Полное название: " + loc.unrestricted_value + "<br>";
          	s+= "<p class='small'>Остальные параметры локации можно посмотреть в консоли браузера</p>"
          	as.sys.bootstrapAlert(s, {type: "success", delay: 1000000});
        }    	
    }
  }
}  

Другие модули

Последние обновления

Вывод временной линии timeline

Визуализация 13.09.2021

Вывод диаграммы типа pie

Визуализация 13.09.2021

Вывод диаграммы вида radar

Визуализация 13.09.2021

Вывод графиков line

Визуализация 13.09.2021

Вывод гистограммы bar

Визуализация 13.09.2021

Вывод полосок прогресса

Визуализация 13.09.2021

SQL-инструмент для создания личных кабинетов на сайте

Суть подхода и история создания Falcon Space

Платформа Falcon Space

Это снижение стоимости владения

за счет меньшего количества людей для поддержки

Это быстрое внесение изменений

по ходу эксплуатации программы

Это современный интерфейс

полная адаптация под мобильные устройства