IT

Axios에서 헤더와 옵션을 설정하려면 어떻게 해야 합니다.

itgroup 2022. 11. 7. 21:27
반응형

Axios에서 헤더와 옵션을 설정하려면 어떻게 해야 합니다.

Axios를 사용하여 다음과 같은 HTTP 투고를 수행합니다.

import axios from 'axios'
params = {'HTTP_CONTENT_LANGUAGE': self.language}
headers = {'header1': value}
axios.post(url, params, headers)

이거 맞는건가요?아니면 어떻게 해야 하나요?

axios.post(url, params: params, headers: headers)

여기에는 몇 가지 방법이 있습니다.

  • 단일 요청의 경우:

    let config = {
      headers: {
        header1: value,
      }
    }
    
    let data = {
      'HTTP_CONTENT_LANGUAGE': self.language
    }
    
    axios.post(URL, data, config).then(...)
    
  • 기본 글로벌 구성을 설정하는 경우:

    axios.defaults.headers.post['header1'] = 'value' // for POST requests
    axios.defaults.headers.common['header1'] = 'value' // for all requests
    
  • Axios 인스턴스에서 기본값으로 설정하는 경우:

    let instance = axios.create({
      headers: {
        post: {        // can be common or any other method
          header1: 'value1'
        }
      }
    })
    
    //- or after instance has been created
    instance.defaults.headers.post['header1'] = 'value'
    
    //- or before a request is made
    // using Interceptors
    instance.interceptors.request.use(config => {
      config.headers.post['header1'] = 'value';
      return config;
    });
    

헤더로 get 요구를 송신할 수 있습니다(예를 들어 jwt를 사용한 인증용).

axios.get('https://example.com/getSomething', {
 headers: {
   Authorization: 'Bearer ' + token //the token is a variable which holds the token
 }
})

또, 포스트 리퀘스트를 송신할 수도 있습니다.

axios.post('https://example.com/postSomething', {
 email: varEmail, //varEmail is a variable which holds the email
 password: varPassword
},
{
  headers: {
    Authorization: 'Bearer ' + varToken
  }
})

내 방법은 다음과 같은 요청을 하는 거야

 axios({
  method: 'post', //you can set what request you want to be
  url: 'https://example.com/request',
  data: {id: varID},
  headers: {
    Authorization: 'Bearer ' + varToken
  }
})

axios.post('url', {"body":data}, {
    headers: {
    'Content-Type': 'application/json'
    }
  }
)

다음과 같이 설정 개체를 악시에 전달할 수 있습니다.

axios({
  method: 'post',
  url: '....',
  params: {'HTTP_CONTENT_LANGUAGE': self.language},
  headers: {'header1': value}
})

올바른 방법은 다음과 같습니다.

axios.post('url', {"body":data}, {
    headers: {
    'Content-Type': 'application/json'
    }
  }
)

이것은 헤더와 응답이 있는 설정의 간단한 예입니다.유형:

var config = {
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
  responseType: 'blob'
};

axios.post('http://YOUR_URL', this.data, config)
  .then((response) => {
  console.log(response.data);
});

Content-Type은 'application/x-www-form-urlencoded' 또는 'application/json'일 수 있으며 'application/json;charset=utf-8'도 작동할 수 있습니다.

responseType은 'arraybuffer', 'blob', 'document', 'json', 'text', 'stream'일 수 있습니다.

이 예에서는, this.data 가 송신하는 데이터입니다.값 또는 어레이일 수 있습니다.(오브젝트를 송신하려면 , 그 오브젝트를 시리얼화할 필요가 있습니다.

헤더를 할 수 .axios.defaults.headers

 axios.defaults.headers = {
        'Content-Type': 'application/json',
        Authorization: 'myspecialpassword'
    }

   axios.post('https://myapi.com', { data: "hello world" })
        .then(response => {
            console.log('Response', response.data)
        })
        .catch(e => {
            console.log('Error: ', e.response.data)
        })

params 및 header로 get request를 수행할 경우 사용합니다.

var params = {
  paramName1: paramValue1,
  paramName2: paramValue2
}

var headers = {
  headerName1: headerValue1,
  headerName2: headerValue2
}

 Axios.get(url, {params, headers} ).then(res =>{
  console.log(res.data.representation);
});

한 헤더를 모든 헤더로 도 있습니다.axios★★★★

// Add a request interceptor
axios.interceptors.request.use(function (config) {
    config.headers.Authorization = 'AUTH_TOKEN';
    return config;
});

두 번째 방법

axios.defaults.headers.common['Authorization'] = 'AUTH_TOKEN';

이 코드를 사용해 보세요.

예를 들어 코드 use axios get rest API 입니다.

말을 타고

  mounted(){
    var config = {
    headers: { 
      'x-rapidapi-host': 'covid-19-coronavirus-statistics.p.rapidapi.com',
      'x-rapidapi-key': '5156f83861mshd5c5731412d4c5fp18132ejsn8ae65e661a54' 
      }
   };
   axios.get('https://covid-19-coronavirus-statistics.p.rapidapi.com/v1/stats? 
    country=Thailand',  config)
    .then((response) => {
    console.log(response.data);
  });
}

희망은 도움이다.

는 이 문제를 포스트 리퀘스트에서 직면했다.악시오스 헤더는 이렇게 바뀌었습니다.잘 되고 있어요.

axios.post('http://localhost/M-Experience/resources/GETrends.php',
      {
        firstName: this.name
      },
      {
        headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
      });

는 ★★★★★★★★★★★★★★★★★★★★★★.fd=new FormData()하여 ""를 합니다.[.append()][1] errordjango API 메서드가 됩니다.400달러제 백엔드에서 프로파일 이미지는 사용자 모델에 대한 OneToOne 관계를 통해 관련지어집니다.따라서 이 오브젝트는 네스트된 오브젝트로 시리얼화되며 put 요구가 동작할 것으로 예상됩니다.

에 대한 모든 은, 「」로 .this.setState i. 이라고 생각합니다.handle Submit(제출)을 실행합니다.

우선 나의 공리들은 다음과 같이 요청한다.

export const PutUser=(data)=>(dispatch,getState)=>{                                                                                                                                                                                                                                                                                                                                                                                                                                           
    dispatch({type: AUTH_USER_LOADING});                                                                                                                                                                                                 
    const token=getState().auth.token;                                                                                                                                                                                                                       
    axios(                                                                                                                                                                                                                                                   
    {                                                                                                                                                                                                                                                        
    ¦ method:'put',                                                                                                                                                                                                                                          
    ¦ url:`https://<xyz>/api/account/user/`,                                                                                                                                                                                           
    ¦ data:data,                                                                                                                                                                                                                                             
    ¦ headers:{                                                                                                                                                                                                                                              
    ¦ ¦ Authorization: 'Token '+token||null,                                                                                                                                                                                                                 
    ¦ ¦ 'Content-Type': 'multipart/form-data',                                                                                                                                                                                                               
    ¦ }                                                                                                                                                                                                                                                      
    })                                                                                                                                                                                                                                                       
    ¦ .then(response=>{                                                                                                                                                                                                                                      
    ¦ ¦ dispatch({                                                                                                                                                                                                                                           
    ¦ ¦ ¦ type: AUTH_USER_PUT,                                                                                                                                                                                                                               
    ¦ ¦ ¦ payload: response.data,                                                                                                                                                                                                                            
    ¦ ¦ });                                                                                                                                                                                                                                                  
    ¦ })                                                                                                                                                                                                                                                     
    ¦ .catch(err=>{                                                                                                                                                                                                                                          
    ¦ ¦ dispatch({                                                                                                                                                                                                                                           
    ¦ ¦ ¦ type:AUTH_USER_PUT_ERROR,                                                                                                                                                                                                                          
    ¦ ¦ ¦ payload: err,                                                                                                                                                                                                                                      
    ¦ ¦ });                                                                                                                                                                                                                                                  
    ¦ })                                                                                                                                                                                                                                                     
  }      

my handleSubmit 메서드는 다음과 같은 json 개체를 생성해야 합니다. 여기서 이미지 속성은 실제 사용자 입력으로 대체됩니다.

user:{
username:'charly',
first_name:'charly',
last_name:'brown',
profile:{
image: 'imgurl',
  }
}

컴포넌트 내 handleSumit 메서드는 다음과 같습니다.추가 체크

handleSubmit=(e)=>{                                                                                                                                                                                                                                      
¦ e.preventDefault();                                                                                                                                                                                                                                                                                                                                                                                                                  
¦ let fd=new FormData();                                                                                                                                                                                                                                 
¦ fd.append('username',this.state.username);                                                                                                                                                                                                             
¦ fd.append('first_name',this.state.first_name);                                                                                                                                                                                                         
¦ fd.append('last_name',this.state.last_name);                                                                                                                                                                                                                                                                                                                                                                                                                  
¦ if(this.state.image!=null){fd.append('profile.image',this.state.image, this.state.image.name)};                                                                                                                                                                                                                                                                                                                                                        
¦ this.props.PutUser(fd);                                                                                                                                                                                                                                
}; 

비동기/대기 사용

Axios 투고 서명

post(url: 문자열, 데이터): any, config? :AxiosRequestConfig) :약속<Axios Response > 데이터와 설정은 모두 옵션입니다.

AxiosRequestConfig는http://https://github.com/axios/axios/blob/e462973a4b23e9541efe3e64ca120ae9111a6ad8/index.d.ts#L60 를 참조해 주세요.

 ....
 ....
 try {
   ....
   ....
   const url = "your post url"
   const data = {
     HTTP_CONTENT_LANGUAGE: self.language
   }
   const config = {
      headers: {
       "header1": value
      },
      timeout: 1000,
      // plenty more options can be added, refer source link above
    }

   const response = await axios.post(url, data, config);
   // If Everything's OK, make use of the response data
   const responseData = response.data;
   ....
   ....
 }catch(err){
   // handle the error
   if(axios.isAxiosError(err){
     ....
     ....
   }
 }

@user2950593 당신의 Axios 요구가 맞습니다.서버 측에서 사용자 지정 헤더를 허용해야 합니다.api를 php로 설정하면 이 코드가 작동합니다.

header("Access-Control-Allow-Origin: *");   
header("Access-Control-Allow-Methods: GET, POST, OPTIONS, HEAD");
header("Access-Control-Allow-Headers: Content-Type, header1");

서버측에서 커스텀헤더를 허용하면, Axios 요구는 정상적으로 동작하기 시작합니다.

언급URL : https://stackoverflow.com/questions/45578844/how-to-set-header-and-options-in-axios

반응형