Я хотел бы сделать 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()
Я былпроводил исследования многих предлагаемых решений в Интернете, но ни одно из них не помогло в моем случае.Любая помощь очень ценится.