web-dev-qa-db-ja.com

axiosを使用してオブジェクトを送信するにはどうすればよいですか?

Axiosを使用してオブジェクトをAPIに送信する方法はありますか?

これは私が使用するコードです:

_axios.get('/api/phones/create/', {
    parameters: {
        phone: this.phone
    }
})
    .then(response => {
        console.log(response.data)
    })
    .catch(function (error) {
        console.log(error)
    })
_

pHP側では、次のものがあります。

_public function create($phone)
{
    return $phone;
}
_

次のエラーが発生します。

_GET http://crm2.dev/api/phones/create 500 (Internal Server Error)
dispatchXhrRequest @ app.6007af59798a7b58ff81.js:256
xhrAdapter @ app.6007af59798a7b58ff81.js:93
dispatchRequest @ app.6007af59798a7b58ff81.js:662
app.6007af59798a7b58ff81.js:2266 Error: Request failed with status code 500
    at createError (app.6007af59798a7b58ff81.js:600)
    at settle (app.6007af59798a7b58ff81.js:742)
    at XMLHttpRequest.handleLoad (app.6007af59798a7b58ff81.js:158)
_

試してみると、axios.get('/api/phones/create/hello')コンソールログにhelloが記録されます。

これを行う方法はありますか?

5
Warrio

「オブジェクトを送信する」とはどういう意味かによって異なります。

GETリクエストを使用していて、パラメータでオブジェクトを渡すので、GETリクエストの一部としてクエリパラメータにシリアル化できます。これは実際にはオブジェクトを送信しませんが、GETリクエストのURLのクエリセクションを構築するために使用します。

たとえば、/api/phones/create?phone=123にリクエストを送信する方法は次のとおりです。

axios.get('/api/phones/create/', {
    params: {
        phone: '123'
    }
})

オブジェクトをシリアル化されたJSONとしてAPIに実際に送信する場合は、APIのセマンティクスに応じて、POSTまたはPUTリクエストを使用できます。

たとえば、{ "phone": "123" }をAPIに送信するには、次のようにします。

axios.post('/api/phones/create/', {
  phone: '123'
});

:axiosはパラメーターにキーparamsを必要とします。

7
nem035

まず、paramsの代わりにparametersを試してください。

Axiosはpromiseに依存しています古いブラウザをサポートしたい場合は、コードに promise polyfillを追加 する必要があるかもしれません。

これがサンプルリクエストです。詳細については、 公式ドキュメント をお読みください。

axios.get('/url', {
    firstName: 'Fred',
    lastName: 'Flintstone'
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });
2
loelsonk