使用 axios 在 react-native 中使用 POST 方法获取 API 数据

Posted

技术标签:

【中文标题】使用 axios 在 react-native 中使用 POST 方法获取 API 数据【英文标题】:Get API data with POST method in react-native with axios 【发布时间】:2018-06-21 18:38:48 【问题描述】:

我需要使用 axios 在 react-native 应用程序中获取数据。我可以使用如下简单的 GET 方法获取数据:

class AlbumList extends Component 

  state =  albums: [] ;

componentWillMount() 
  //axios.get('https://rallycoding.herokuapp.com/api/music_albums') .then(response => console.log(response));
  axios.get('http://rallycoding.herokuapp.com/api/music_albums')

  .then(response => this.setState( albums: response.data ));
        
        renderAlbums() 
          return this.state.albums.map(album =>
          <AlbumDetail key=album.title album=album />);
         // return this.state.albums.map(album => <Text>album.title</Text>);
        

render() 
    console.log(this.state);

return (
   <View>
        this.renderAlbums()
    </View>    
);


如何使用POST 方法从 API 获取数据,并且还需要传递标头和 api-username、api-password、apitoken?

我需要像 https://***.com/a/41358543/949003 这样的东西,但要使用 AXIOS

编辑:

我需要从LINNWORK API 获取数据。如果有人这样做,请指导。他们首先需要authorize,然后我可以从那里获取数据。所以授权,然后下一步。

【问题讨论】:

【参考方案1】:

axios post 方法采用 3 个参数,即 url、data 和 config。

您可以按如下方式构造 axios 发布请求:

axios.post(
    'http://rallycoding.herokuapp.com/api/music_albums', 
    
       'param1': 'value1',
       'param2': 'value2',
       //other data key value pairs
    ,
    
       headers: 
           'api-token': 'xyz',
            //other header fields
       
    
);

在您的情况下,您需要访问https://api.linnworks.net/api/Inventory/GetCategories,根据docs,这需要Authorization 标头中来自auth api 的token。所以你通过 axios 的 GET 请求将是:

axios.get("https://api.linnworks.net/api/Inventory/GetCategories",  
    headers: 
      'Authorization': 'token-from-auth-api'
    
).then((response) => 
    console.log(response.data);
)

【讨论】:

您的输出非常有价值,请检查编辑,以便我解决问题。非常感谢 @Jai 你能从 auth api 生成访问令牌吗? 我有用于 Cakephp 项目的访问令牌和用户名密码。我将在 react native 应用程序中使用相同的内容。 @Jai 你能通过私人谈话分享细节吗?到时候帮到你会更容易 好的。请告诉我如何进行私人对话?

以上是关于使用 axios 在 react-native 中使用 POST 方法获取 API 数据的主要内容,如果未能解决你的问题,请参考以下文章

AXIOS 调用在 React-Native 0.63 中给出网络错误

在 React-Native 应用程序中使用带有授权标头的 Axios GET

在 Cloudinary 上使用 axios 上传 React-Native imagePicker

在 react-native 中发送请求标头/授权 axios.post

Axios 承诺处理 - 在 react-native 中获取“可能的未处理承诺拒绝 - 类型错误:网络请求失败”

POST 方法在 react-native 应用程序(Android)中不起作用(Fetch 或 Axios)