Ошибка при выполнении запроса POST в C # для API REST Django - PullRequest
0 голосов
/ 19 июня 2019

Я хотел бы сделать POST-запрос к API-интерфейсу REST Django.Мои данные (строка Json) живут в приложении C #.Я использую этот фрагмент:

var httpWebRequest = (HttpWebRequest)WebRequest.Create(myurl);
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
  string json = "{\"a\":\"sun\", \"b\":\"moon\"}";
  streamWriter.Write(json);
}

var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
  var result = streamReader.ReadToEnd();
}

К сожалению, я получаю эту ошибку в 'var httpResponse = (HttpWebResponse) httpWebRequest.GetResponse ();'строка:

System.Net.WebException: 'The remote server returned an error: (405) Method Not Allowed.' 

Я также проверил журналы API Django, именно Django выдает ошибку «Method Not Allowed».

После некоторых исследований это выглядит такэто вызвано тем фактом, что POST не разрешен в моем приложении Django REST.

Я смог без проблем выполнить запросы GET.Для этого в моем приложении django REST Framework я использую функцию retrieve () внутри моего файла views.py.У меня также есть функция create () в том же файле views.py.Я думал, что эта функция сможет обработать POST-запрос.

Однако, похоже, я даже не могу его получить, поскольку приложение Django сразу выдает ошибку «Method Not Allowed».

Есть ли способ разрешить POST-запросы?Я попытался добавить декоратор

@action(detail=True, methods=['get','post']) 

над функциями create () и retrieve () в файле views.py, но это не сработало.Я получаю следующую ошибку:

django.core.exceptions.ImproperlyConfigured: Cannot use the @action decorator on the following methods, as they are existing routes: create, retrieve

Обратите внимание, что я использую DefaultRouter (в файле urls.py) (в случае, если это имеет значение)

router = routers.DefaultRouter()

Я былпроводил исследования многих предлагаемых решений в Интернете, но ни одно из них не помогло в моем случае.Любая помощь очень ценится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...