как вы можете заставить API изменять свои данные?

#javascript #python #django

#javascript #python #django

Вопрос:

Это код, который у меня есть, при нажатии на него он должен определять URL, введенный в форме, а затем он запускает скребок, который распечатывает электронные письма, найденные по URL. Я хочу, чтобы результаты были напечатаны на той же странице. Как я должен создать свой API для достижения этой цели?

Код Javascript:

 function submitURL() {

 const url = document.querySelector("#InputSearch").value;
 const data = { url };

 fetch('http://127.0.0.1:8000/api/', {
   method: 'POST',
   headers: {
     'Content-Type': 'application/json',
   },
   body: JSON.stringify(data),
 })
 .then(response => response.json())
 .then(data => {
   console.log('Success:', data);
 })
 .catch((error) => {
   console.error('Error:', error);
 });
}
 

Создан текущий API (я хочу, чтобы он принимал данные найденных электронных писем):

 class apiOverview(APIView):
    serializer_class = serializers.EmailsSerializer


    def post(self, request):
        serializer = self.serializer_class(data=request.data)

        if serializer.is_valid():
            url = serializer.validated_data.get('url')
            message = f'The url is {url}'
            return Response({'message': message})
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

    def patch(self, request, pk=None):
        return Response({'method': 'PATCH'})

    def put(self, request, pk=None):
        return Response({'method': 'PUT'})

    def delete(self, request, pk=None):
        return Response({'method': 'DELETE'})
 

Комментарии:

1. Я не думаю, что это было бы хорошей идеей для изменения данных в самом api, поскольку пользователи будут делиться этими измененными данными. Если вы не аутентифицировали пользователей, назначив им каждому идентификатор, который может быть жизнеспособным способом обновления объекта api. Я не уверен, что вы подразумеваете под той же страницей. Вы имеете в виду печать ответа с сервера на javascript? Похоже, вы уже это делаете …?

2. если вы планируете хранить свои данные в api

3. да, я думаю, для печати ответа с сервера на Javascript. Я вижу, что он уже это делает. Но никакой информации не появляется…

4. возможно, что-то не так с регистрацией в вашем браузере. Проверьте наличие ошибок, и если их нет, попробуйте вместо этого предупредить значение, если вы еще не пробовали.

Ответ №1:

Если вы хотите отобразить результаты вызова API в своем документе с помощью javascript, используя данные из ответа как data :

 let dataArea = document.createElement('p');
data['dataPoints'].forEach(dataPoint =>
      let dataChunk = document.createElement('p');
      dataChunk.innerText = dataPoint.text;
      dataArea.appendChild(dataChunk);
)

 

Если вы предпочитаете использовать jQuery, там есть больше вариантов:
https://www.w3schools.com/jquery/jquery_dom_add.asp

Комментарии:

1. Uncaught SyntaxError: missing ) after argument list Я не знаю, почему он говорит об этой ошибке