Я делаю это неправильно или в django rest api framework / coreapi есть ошибка?

У меня проблемы с Coreapi и Django REST API. Возможно, кто-то может помочь мне понять, что не так.
На update а также partial_update схема возвращает одни и те же поля дважды. Вот пример:

        "update": {
            "_type": "link",
            "url": "/lindex/puddle/{name}/",
            "action": "put",
            "encoding": "application/json",
            "fields": [
                {
                    "name": "name",  <-- Here 
                    "required": true,
                    "location": "path",
                    "schema": {
                        "_type": "string",
                        "description": "A unique value identifying this puddle.",
                        "title": "name"
                    }
                },
                {
                    "name": "name", <-- Here
                    "required": true,
                    "location": "form",
                    "schema": {
                        "_type": "string",
                        "description": "",
                        "title": "Name"
                    }
                },

Когда Coreapi делает этот вызов

create = client.action(schema, ['api', 'v1', 'puddleatom', 'update'],
    {   "name": "1NEW",
        #"names": "RAW_TR_BOS_CDR_201701-NEW",
        "ingestion_flow": "ING-RAW_TR_BOS_CDR",
        "status": "OK",
        "location": "hdfs://hdfs-prod/user/hive/warehouse/repl_jmailer_tr.db/bos_cdr_201701",
        "comment": "This atom contains data about BOS_CDR in 201701",
        "records": 29452695,
        "size": 2022540894,
        "files": 10,
        "puddle": "RAW_TR_BOS_CDR"
    })

вычисленный URL неверен:

http://172.17.0.2:8000/api/v1/puddleatom/{name}/

Это происходит потому, что функция _get_params в /usr/local/lib/python2.7/dist-packages/coreapi/transports/http.py

распределяет параметры в форме, но не в пути

key[status], value[OK]
location:form
key[comment], value[This atom contains data about BOS_CDR in 201701]
location:form

-------------------
name is processed just once into the _get_params function and the destination is the form 

key[name], value[1NEW]
location:form
--------------------


key[records], value[29452695]
location:form
key[puddle], value[RAW_TR_BOS_CDR]
location:form
key[ingestion_flow], value[ING-RAW_TR_BOS_CDR]
location:form
key[files], value[10]
location:form
key[size], value[2022540894]
location:form
key[location], value[hdfs://hdfs-prod/user/hive/warehouse/repl_jmailer_tr.db/bos_cdr_201701]
location:form

Что здесь может быть не так? _get_params в /usr/local/lib/python2.7/dist-packages/coreapi/transports/http.py или определение схемы, где одни и те же поля сообщаются дважды?

0 ответов

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