получение URL, сгенерированного breeze

#jquery #breeze

#jquery #breeze

Вопрос:

В настоящее время я использую breeze на стороне клиента. Я пишу запрос linq и использую breeze для преобразования его в URL-запрос, который попадет на мой сервер. Мне было интересно, есть ли какой-либо способ узнать на стороне клиента URL, который он генерирует.

Код, который я использую:

 var query = breeze.EntityQuery.from("Partners");
manager.executeQuery(query, function (data) {
var results = data.results;
...............................
}
  

Ответ №1:

Для типа EntityQuery существует недокументированный метод _toUri. В качестве аргумента он принимает MetadataStore.

  var query = new EntityQuery()
        .from("Customers")
        .where("companyName", "startsWith", "C")
        .orderBy("companyName");
 var queryUrl = query._toUri(myEntityManager.metadataStore);
  

Обратите внимание, что этот метод НЕ гарантирует продолжения доступности, поэтому использовать его для отладки или изучения синтаксиса OData можно, но не зависеть от него в производстве.

Ответ №2:

Для чего вы хотите использовать URL-адрес? Вы вообще изучали объект запроса? Он содержит имя ресурса, которое является путем, который добавляется к URL вашего API при выполнении запроса и доступен до выполнения запроса —

 var resource = query.resourceName;
  

Если бы вы добавили это к своему entityManager имени службы, вы могли бы создать URL-адрес, который будет использовать Breeze —

 var fullPath = manager.serviceName   query.resourceName;
  

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

Комментарии:

1. Query.resourceName — это только конечная точка; она не включает строку запроса OData, которую генерирует Breeze, и, предположительно, поэтому вы хотели бы увидеть сгенерированный URL.