как добавить некоторый ключ ко всем вызовам ajax в существующих запросах get / post

#javascript #jquery #ajax

#javascript #jquery #ajax

Вопрос:

я работаю над существующим большим проектом, в котором у меня есть такие требования, как

Вопрос: мне нужно добавить auth_token ко всем существующим API GET и POST почти 1239 в количестве. как перехватить все GET,POST , чтобы добавить auth_token .

После перехвата и подключения auth_token все API должны иметь auth_token ключ

Вот как мне нужно, чтобы все API вызывались с помощью auth_token

 var AUTH_TOKEN = '8450d1eaf4fe0daf6dd';

//code to intercept all ajax call to add auth_key into it


$.ajax({
   url: 'https://jsonplaceholder.typicode.com/todos/1',
   type:'GET',
   success:function(){
      console.log('sent url must contain auth_token',this.url);
   }
});


$.ajax({
   url: 'https://jsonplaceholder.typicode.com/posts',
   type:'POST',
   data:JSON.stringify({"userId":919,id:966,title:'a'}),
   success:function(){
      console.log('sent data must conatain auth_token',this.data);
   }
}); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 

Ответ №1:

Вы можете использовать beforeSend метод $.ajaxSetup добавления данных ко всем отправляемым вами запросам.

Стоит отметить, что даже несмотря на то, что свойство добавлено, ваш API по-прежнему возвращает ошибку, указывающую, что auth_token требуется. Проверьте документацию API, чтобы убедиться, что его не нужно отправлять в запросе другим способом, например, в качестве заголовка.

 var AUTH_TOKEN = '8450d1eaf4fe0daf6dd';

$.ajaxSetup({
  beforeSend: function(jqXHR, settings) {
    if (settings.type === 'GET') {
      settings.url  = (settings.url.indexOf('?') == -1 ? '?' : 'amp;')   'auth_token='   AUTH_TOKEN
    } else {
      let data = JSON.parse(settings.data || '{}');
      data.auth_token = AUTH_TOKEN;
      settings.data = JSON.stringify(data);
    }
  }
});

$.ajax({
  url: 'https://jsonplaceholder.typicode.com/todos/1',
  type: 'GET',
  success: function() {
    console.log('sent url must contain auth_token', this.url);
  }
});


$.ajax({
  url: 'https://jsonplaceholder.typicode.com/posts',
  type: 'POST',
  data: JSON.stringify({
    "userId": 919,
    id: 966,
    title: 'a'
  }),
  success: function() {
    console.log('sent data must conatain auth_token', this.data);
  }
}); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 

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

1. я думаю, что для get он не прикреплен, для post он работает нормально

2. ожидалось, что ПОЛУЧИТСЯ вот так https://jsonplaceholder.typicode.com/todos/1?s={auth_token:'8450d1eaf4fe0daf6dd'}

3. Вы правы, я обновил до dd параметр querystring для запроса GET

4. Подождите, вы хотите отправить JSON в параметре querystring …? Это ОЧЕНЬ странная вещь

5. >>> Подождите, вы хотите отправить JSON в параметре querystring… НЕ ТРЕБУЕТСЯ работает нормально большое спасибо