Курсор Freebase Key является зарезервированным словом

Следуя документам Freebase по параметрам конверта, запустив

{
  "cursor":true,
  "query":[{
    "type":"/music/album",
    "artist":"The Police",
    "name":null,
    "limit":10
  }]
}​

приводит к ошибке "Key cursor is a reserved word" как @Domenic отмечает.

Что происходит не так?


Изменить 1

Итак, этот запрос без курсора работает, но в этом нет, потому что курсор был именем переменной, а не строкой, заключенной в кавычки.

Как пользователь, имеет смысл ввести неработающую версию "cursor", потому что таблица типов параметров чтения имеет как query, так и "cursor" как type: string, и query ошибки, если вы заключите их в кавычки как "query"

Однако даже заключение "cursor" в кавычки все равно не работает: в результате для каждого запроса будут одни и те же данные.


person Alec Wenzowski    schedule 03.11.2011    source источник
comment
Ссылка, которую вы дали, ведет на рабочую версию этого запроса в редакторе запросов. Вы получили эту ошибку в редакторе запросов или при непосредственном вызове APIO?   -  person Shawn Simister    schedule 04.11.2011
comment
Оба с одним и тем же запросом, ни один из них не работал на момент публикации. Приятно знать, что документы верны и теперь они работают. Если повторится, сделаю скриншот.   -  person Alec Wenzowski    schedule 04.11.2011
comment
Re: Редактировать 1 - первый запрос должен быть просто mqlread?cursor=&query=[{...}]. Это вернет значение запроса в результатах, а затем ваш следующий запрос будет выглядеть примерно так: mqlread?cursor=eNo10UlqAzEQBdALCVxz1e...&query=[{...}]   -  person Shawn Simister    schedule 04.11.2011


Ответы (1)


Похоже, это может быть еще один случай, когда редактор запросов слишком умен и исправляет ошибки за нас. Если вы скопируете и вставите приведенный выше запрос в редактор запросов и нажмете «Выполнить», вы получите эту ошибку, как вы сообщили:

{
  "code":          "/api/status/error",
      "messages": [{
    "code":    "/api/status/error/mql/type",
    "info": {
      "expected_type": "/type/object",
      "property":      "cursor"
    },
    "message": "Key cursor is a reserved word",
    "path":    "",
    "query": {
      "cursor":       true,
      "error_inside": ".",
      "query": [{
        "artist": "The Police",
        "limit":  10,
        "name":   null,
        "type":   "/music/album"
      }]
    }
  }],
  "status":        "200 OK",
  "transaction_id": "cache;cache03.p01.sjc1:8101;2011-11-04T17:42:13Z;0057"
}

Но затем, если вы нажмете постоянную ссылку на этот запрос, он изменит ее на этот запрос и автоматически установит для свойства курсора значение true.

[{
  "type":   "/music/album",
  "artist": "The Police",
  "name":   null,
  "limit":  10
}]​

Это происходит потому, что служба чтения MQL ожидает, что запрос будет вложен в конверт запроса. но редактор запросов просто берет запрос, который вы ему даете, и автоматически упаковывает его в соответствующий конверт запроса для вас.

В новой версии сервиса чтения MQL мы убрали конверт запроса, и теперь cursor — это просто параметр HTTP-запроса GET.

person Shawn Simister    schedule 04.11.2011
comment
Редактор запросов: совершенно верно. Очевидно, мои способности к сканированию нуждаются в улучшении. - person Alec Wenzowski; 04.11.2011