Проблема
Я интегрировал Django REST Framework JSON API (https://django-rest-framework-json-api.readthedocs.io/en/stable/) в наш проект.
Эта библиотека работает поверх:
- Django REST Framework (http://www.django-rest-framework.org/)
- Джанго (https://www.djangoproject.com/)
Я частично заработал, используя их документы, и мой greeter/views.py выглядел примерно так:
"""Defines the Greeter views"""
from rest_framework import viewsets
from .models import Greeter
from .serializers import GreeterSerializer
class GreeterViewSet(viewsets.ModelViewSet):
"""API endpoints for Greeter"""
queryset = Greeter.objects.all()
serializer_class = GreeterSerializer
Однако по какой-то причине, используя веб-интерфейс, я могу выполнять POST и создавать объекты приветствия, но использование curl из командной строки не помогло.
Я не знал, как взаимодействовать с django и фреймворком REST для решения моей проблемы.
Решение
В итоге мне пришлось переопределить определенные методы, чтобы устранить неполадки, которые получали Django и платформа REST. Итак, greeter/views.py теперь выглядит так:
"""Defines the Greeter views"""
from rest_framework import viewsets
from rest_framework.response import Response
from .models import Greeter
from .serializers import GreeterSerializer
class GreeterViewSet(viewsets.ModelViewSet):
"""API endpoints for Greeter"""
queryset = Greeter.objects.all()
serializer_class = GreeterSerializer
def create(self, request):
print('#########creating')
print(request.data)
return Response()
Как только я смогу переопределить и вернуть контроль над фреймворками, я смогу приступить к устранению неполадок в запросе и его параметрах.
Примечания
Команда curl, которая мне понадобилась, чтобы все заработало:
$ curl \
-H 'Content-Type: application/vnd.api+json;' \
-H 'Accept: application/vnd.api+json; indent=2' \
-X POST --data @greeter.json \
http://localhost:8000/greeters/
С greeter.json:
{
"data": {
"type": "Greeter",
"id": null,
"attributes": {
"message": "greetings"
}
}
}