LoginSignup
1
0

More than 3 years have passed since last update.

Reactでaxiosを使ってJSONPのデータを取得する

Last updated at Posted at 2020-11-05

JSONP

クライアントが提供するAPIがJSONPしかなかった。
レスポンスのコールバック関数名が固定だったのだけれど、その時の実装方法が意外とインターネットに書かれてなくて厄介だったのでメモ。

npm

npm i axios
- axios - npm
npm i axios-jsonp
- axios-jsonp - npm

JSONPレスポンス

callback({
 "title": "test",
 "text": "sample"
})

サンプルコード

import React from 'react'
import axios from 'axios'
import axiosJsonpAdapter from 'axios-jsonp'

const App = () => {
  //グローバルなwindowオブジェクトにコールバック関数を登録する
  window.callback = json => console.log(json)

  React.useEffect(()=>{
    axios.get('http://hogehoge/getjsonp', {
      adapter: axiosJsonpAdapter
    })
  },[])
}

export default App

ポイント

リクエストが完了した時点で、JSONP内で指定されている関数名が実行されるが、コード内で関数が定義されていないとcallback is not definedというエラーになってしまう。
その関数はグローバルな必要があるため、windowオブジェクトにコールバック関数を登録している。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0