Как решить проблему несоответствия имен, если имена на стороне клиента являются ключевыми словами или зарезервированными словами на языке серверной части, который вы используете?
В наборе инструментов DOJO JavaScript есть класс QueryReadStore, который можно создать подклассом для отправки шаблонных запросов REST на сервер. Я использую это вместе с FilteringSelect Dijit.
Я могу создать подкласс QueryReadStore и указать параметры и аргументы, передаваемые на сервер. Но где-то по пути от клиента к серверу передаются параметры «start» и «count». Я вошел в API и обнаружил, что QueryReadStore.js отправляет эти имена параметров.
Я использую Fiddler, чтобы подтвердить, что на самом деле отправляется и возвращается. Ответ сервера сообщает мне, что у меня несоответствие имен параметров из-за параметров "start" и "count". Проблема в том, что я не могу использовать «начало» и «счет» в PL / SQL.
Обходной путь или совет по правильной реализации были бы признательны ... спасибо.
// Я попытался вставить сюда фрагмент кода, но, поскольку это в основном HTML, это не сработало.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Хотя это кажется неправильным поступком, потому что я взламываю хорошо протестированный, хорошо написанный инструментарий JavaScript, вот как я решил проблему:
Я вошел в DOJOX QueryReadStore.js и заменены - ссылки "start" и "count" с приемлемыми (для серверного языка) именами параметров.
Я хотел бы решить эту проблему с помощью моего PL / SQL (но я не знаю, как обойти зарезервированные слова) или клиентского кода (подклассы не помогли) ..., не углубляясь во внутренности библиотеки. Но это работает, и я могу двигаться дальше.
В отличие от удаления его из API, как вы упомянули, вы можете создать подкласс со своей собственной выборкой и удалить параметры start / count (теоретически). Взгляните на этот URL-адрес для руководства:
http://www.sitepen.com/blog/2008/06/25/web-service-data-store/
Start и count на самом деле очень полезны, потому что они позволяют вам передавать параметры для запроса, которые вы можете использовать для фильтрации массивных наборов данных, и это помогает управлять подкачкой на стороне клиента. Вместо этого я бы попытался создать подкласс, перехватить и удалить.
Доступ к вашей программе pl / sql осуществляется через URL-адрес и mod_plsql? Если это так, то вы можете использовать «гибкую передачу параметров», и переменные будут присвоены массиву пар имя / значение.
Определите спецификацию вашего пакета следующим образом ...
create or replace package pkg_name
TYPE plsqltable
IS
TABLE OF VARCHAR2 (32000)
INDEX BY BINARY_INTEGER;
empty plsqltable;
PROCEDURE api (name_array IN plsqltable DEFAULT empty ,
value_array IN plsqltable DEFAULT empty
);
END pkg_name;
Затем тело:
CREATE OR REPLACE PACKAGE BODY pkg_name AS
l_count_value number;
l_start_value number;
PROCEDURE proc_name (name_array IN plsqltable DEFAULT empty,
value_array IN plsqltable DEFAULT empty) is
------------
FUNCTION get_value (p_name IN VARCHAR) RETURN VARCHAR2 IS
BEGIN
FOR i IN 1..name_array.COUNT LOOP
IF UPPER(name_array(i)) = UPPER(p_name) THEN
RETURN value_array(i);
END IF;
END LOOP;
RETURN NULL;
END get_value;
----------------------
begin
l_count_value := get_value('count');
l_start_value := get_value('start');
end api;
end pkg_name;
Затем вы можете вызвать pkg_name.api, используя
http://server/dad/!pkg_name.api?start=3&count=3