Асана - Недопустимое поле

Я отправляю следующий JSON в конечную точку asana «задачи».

{
    "data": {
        "options": {
            "fields": [
                "name",
                "notes"
            ]
        },
        "workspace": <valid number>,
        "assignee": <valid number>
    }
}

Каждый раз выдает ошибку "Недопустимое поле". Я прочитал API несколько раз, и этот JOSN выглядит именно так, как говорит API. Есть идеи?

Asana API для тех из вас, кто хочет помочь: Документация Asana API


person DanRedux    schedule 30.04.2012    source источник
comment
Можете ли вы опубликовать свое точное сообщение об ошибке? Благодарю.   -  person Bibhas Debnath    schedule 30.04.2012
comment
Invalid field: ЯВЛЯЕТСЯ точным сообщением об ошибке, за исключением того, что они также возвращают JSON, который я отправил им по какой-то причине.   -  person DanRedux    schedule 01.05.2012


Ответы (1)


(Я работаю в Асане)

Поле «параметры» является братом поля «данные», а не дочерним. Это упоминается в документах, но, возможно, мы не приводим поясняющие примеры, чтобы сделать это более очевидным.

Если вы измените свой запрос, чтобы он выглядел так:

{
    "options": {
        "fields": [
            "name",
            "notes"
        ]
    },
    "data": {
        "workspace": <valid number>,
        "assignee": <valid number>
    }
}

вещи должны работать.

person Greg S    schedule 30.04.2012
comment
У меня точно такой же JSON, как вы предоставили, но я все еще получаю сообщение об ошибке недопустимого поля. Ни одна фраза не отправляется обратно. Вот массив, объявленный в PHP, и версия в кодировке JSON выглядит идентично той, которую вы предоставили. array('options'=>array('fields'=>array('name','notes')),'data'=>array('workspace'=>$workspace->id,'assignee'=>$user->id))) - person DanRedux; 30.04.2012
comment
Я вижу, проблема может заключаться в каком-то аспекте вашего запроса, который вы не упомянули. Наш API принимает как JSON, так и данные формы в качестве входных типов, но вы должны правильно установить тип содержимого. Попробуйте добавить заголовок: Content-Type: application/json - person Greg S; 01.05.2012
comment
Это сработало. Как ни странно, я запрашиваю https://app.asana.com/api/1.0/tasks, передавая ему JSON выше, но получаю ответ 201, что, согласно API, является успешным для создания объекта. Я не хотел создавать никаких задач, я хотел запросить все задачи. Это работало, когда я использовал GET, поэтому я почти думаю, что POST-запросы предполагаются для публикации чего-то, а GET-запросы запрашивают? Я даже вручную установил параметры-›метод GET, но это все равно создало новую задачу? - person DanRedux; 01.05.2012
comment
Другими словами, как я могу что-то ПОЛУЧИТЬ, но отправить информацию с помощью POST? - person DanRedux; 01.05.2012
comment
RESTful API, такой как Asana, будет по-разному интерпретировать различные методы HTTP, см.: en.wikipedia.org/wiki/Representational_State_Transfer - поэтому отправка POST на определенные конечные точки будет создаваться, а GET будет извлекаться. PUT обновит, а DELETE удалит. Для запросов лучше использовать GET-запросы. Опция метода должна работать так, как рекламируется. Мы выясним, почему это не так (может быть ошибка), но рекомендуем вам использовать GET для описанной вами цели. - person Greg S; 01.05.2012
comment
Я предполагаю, что это ошибка, так как параметр метода действительно должен переопределять ее. Я чувствую, что немного странно зависеть от типа запроса, просто предположим, что это GET (независимо от типа запроса), поскольку это единственное безопасное предположение. Это также означает, что в опции метода вы должны принять PUT и UPDATE в качестве флагов обновления, потому что слово update является гораздо более естественным словом для обозначения обновления, чем put. Но это ваш API, это всего лишь мои предложения. Мы используем Asana для всего на моем рабочем месте, и я пытаюсь интегрировать ее в чат ajax, чтобы мы могли общаться в команде, а также делиться задачами Asana. - person DanRedux; 01.05.2012
comment
О, и я, конечно же, выпущу его для публики бесплатно, поскольку Асана — отличный инструмент. :) - person DanRedux; 01.05.2012