SharePoint: проверка SPQuery

Я пишу внутренний API для своей компании, который позволяет пользователям передавать запросы SharePoint CAML. Что касается моей функции, я беру запрос пользователя и добавляю в него некоторые дополнительные элементы, а затем использую последний запрос для получения необходимых данных из SharePoint.

Пример:

Пользователь проходит в:

<Query>
   <Where>
      <Eq>
         <FieldRef Name='Category' />
         <Value Type='Choice'>Bug</Value>
      </Eq>
   </Where>
</Query>

Внутренне я изменяю запрос так:

<Query>
   <Where>
      <And>
         <Eq>
            <FieldRef Name='Category' />
            <Value Type='Choice'>Bug</Value>
         </Eq>
         <Eq>
            <FieldRef Name='AssignedTo' />
            <Value Type='Integer'><UserID /></Value>
         </Eq>
      </And>
   </Where>
</Query>

Как вы думаете, что является лучшим способом проверки запросов, отправленных пользователями?

1 ответ

Решение

Если запросы, которые вы собираетесь разрешить, довольно ограничены, то может быть хорошим подходом построить схему, которая будет представлять собой действительный запрос. Тогда вы можете просто увидеть, является ли их XML действительным в соответствии с этой схемой. Кроме того, я знаю, что вы можете использовать DLL CAML Builder из кода. Я не могу найти пример этого сразу, но может быть способ использовать его методы построения CAML в блоке try/catch, чтобы остановить когда-либо неправильные запросы.

Кроме того, мне приходит в голову, что вам, возможно, придется остерегаться того факта, что FieldRef запроса CAML необходимо будет построить с использованием внутреннего имени поля, которое может отличаться от отображаемого имени.

Другие вопросы по тегам