Интеграция с Тургенев API для проверки качества контента

Данное API позволяет проверить ваш текст на наличие различных ошибок в тексте (в первую очередь в плане SEO).

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

1. Регистраця на https://turgenev.ashmanov.com и получение ключа API. 

2. Создаем API запрос turgenev в /asapi - GET, json 

3. Процедура Request для API запроса:

CREATE PROCEDURE [dbo].[api_turgenev_request]
	@parameters ExtendedDictionaryParameter READONLY, 
	@username nvarchar(32)  
AS
BEGIN
	
	declare @url nvarchar(max) = (select Value2 from @parameters where [key]='url')
	declare @class nvarchar(max) = (select Value2 from @parameters where [key]='class')
    declare @key nvarchar(max) = dbo.as_setting('turgenevKey', '______________')
    declare @type nvarchar(max) = 'risk'
    declare @more nvarchar(max) = '1'
    print @url
	-- SELECT 1  Msg, Result, Url
	select '' Msg, 1 Result, 'https://turgenev.ashmanov.com/?api='+@type+'&key='+@key+'&tbclass='+@class+'&more='+@more+'&url='+ dbo.as_urlEncode(@url) Url 

	-- SELECT 2 PARAMETERS - параметры, которые будут передаваться во внешний источник
END

Вы можете внести либо в Настройки ключ либо вписать его в текст процедуры. 

Обратите внимание, что URL страницы мы должны декодировать через as_urlEncode

3. Пишем процедуру response: 

CREATE PROCEDURE [dbo].[api_turgenev_response]
	@response nvarchar(max),
	@parameters ExtendedDictionaryParameter READONLY,  	
	@username nvarchar(32)
AS
BEGIN
	declare @pageID int = (select try_cast(Value2 as int) from @parameters where [key]= 'pageID')
	if(@pageID is not null) begin 
    	insert into kw_pageAnalyzes (pageID, created, createdBy, typeCode, JSON, summary)
        values (@pageID, getdate(), @username, 'turgenev', @response, '')
    end    
    -- SELECT 1
	select '' Msg, 1 Result, @response Response
END

В данном случае мы сохраняем весь JSON в некую таблицу с идентификатором pageID (он должен быть передан через внешнее действие, см. далее)

4. Вызываем внешнее действие apirequest (например как кнопка Save в некоторой форме): 

    	if(isnull(@purl, '') ='') begin 
        	select 'Не задан URL у страницы ' Msg, 0 Result
        	return 
        end 
    
    	select ' ' Msg, 1 Result,  'body' RefreshContainer 
        select 'apirequest' type, 'turgenev' code, 'url' p1_name, @purl p1_value,
        	'class' p2_name, '' p2_value,   -- .bl-text
            'pageID' p3_name, cast(@itemID as nvarchar) p3_value

Если мы хотим, чтобы анализ проводился не по всей странице, а только по некоторому div, то указываем этот контейнер через параметр class

5. Теперь выведем эти данные в некой таблице. Мы должны распарсить значения из JSON, а также сделать ссылки на полный отчет. GetItems для подобной таблицы: 

CREATE PROCEDURE [dbo].[crud_relPageAnalyzes_getItems]
	@filters CRUDFilterParameter READONLY,  
	@sort sql_variant,
	@direction nvarchar(8),
	@page int,
	@pageSize int,
	@username nvarchar(32)
AS
BEGIN	
	declare @pageID int
	select @pageID = try_cast(Value as int) from @filters where [Key] = 'itemID'	
	
	-- SELECT 1
	select  top 100 
      id,
      isnull([typeCode], '') [typeCode],
      iif(typeCode='turgenev', 'Справка','') desc_typeCode,
      createdBy + ' ' + dbo.as_timeDelay(datediff(minute,created, getdate())) + ' назад ' date,
		' ' +JSON_VALUE(json, '$.level') + '' data, 
        '
'+JSON_QUERY(json, '$.details') + '
' [sub_data]
	from kw_pageAnalyzes
	where pageID = @PageID 
    order by  id desc
	
	-- SELECT 2
	select 1

	-- SELECT 3
    select 1 HideTitleCount, 1 Compact
	
END

 Извлекаем результаты основного вывода по странице, а также показываем детали в виде структурированного JSON ответа: 

Пройдя по ссылке в столбце Данные, вы увидите скрин из начала статьи

Документация Тургенев API  https://turgenev.ashmanov.com/?a=apikey

Falcon Space - функциальная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space
Насколько полезной была статья?

Google поиск по нашей документации

Falcon Space

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

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

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

по ходу эксплуатации программы. Как создается функционал на платформе

Это простой удобный интерфейс

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