Я делаю это неправильно или в 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
или определение схемы, где одни и те же поля сообщаются дважды?