javascript - React / Axios - “代码”:400,“消息”:“必需参数:部分”
问题描述
我正在尝试向我的 youtube api 发出 GET 请求,并且我得到了这个请求,即使我已经包含了 "part" :
"code": 400, "message": "Required parameter: part"
并从网络选项卡:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "required",
"message": "Required parameter: part",
"locationType": "parameter",
"location": "part"
}
],
"code": 400,
"message": "Required parameter: part"
}
}
谁能帮我弄清楚我在这里做错了什么?
这是我的文件:
youtube.js
const KEY = "my api key";
export default axios.create({
baseURL: "https://www.googleapis.com/youtube/v3",
params: {
part: "snippet",
maxResults: 5,
key: KEY
}
});
我的应用程序:
class App extends React.Component {
state = {};
onSearchSubmit = term => {
const x = youtube.get("/search", {
params: {
q: term
}
});
console.log(x);
};
render() {
return (
<div className='ui container'>
<SearchBar onFormSubmit={this.onSearchSubmit} />
</div>
);
}
}
最后是我的 SearchBar.js :
class SearchBar extends React.Component {
state = { term: "" };
onInputChange = event => {
this.setState({ term: event.target.value });
};
onformSubmit = event => {
event.preventDefault();
this.props.onFormSubmit(this.state.term);
};
render() {
return (
<div className='ui segment search-bar'>
<form onSubmit={this.onformSubmit} action='' className='ui form'>
<div className='field'>
<label htmlFor=''>Video Search</label>
<input
value={this.state.term}
type='text'
onChange={this.onInputChange}
/>
</div>
</form>
</div>
);
}
}
一直试图弄清楚没有任何运气。(我知道我没有保存 fetch 响应,我只是想在执行此操作之前先测试 GET。)
Axios - 0.18
谢谢 !!!
解决方案
原因:覆盖参数
const KEY = "my api key";
export const baseParams = {
part: "snippet",
maxResults: 5,
key: KEY
};
export default axios.create({
baseURL: "https://www.googleapis.com/youtube/v3"
})
import React from 'react';
import SearchBar from './SearchBar';
import youtube, { baseParams } from '../components/apis/youtube';
class App extends React.Component {
state = {};
onSearchSubmit = term => {
const x = youtube.get("/search", {
params: {
...baseParams,
q: term
}
});
console.log(x);
};
render() {
return (
<div className='ui container'>
<SearchBar onFormSubmit={this.onSearchSubmit} />
</div>
);
请忽略以下内容,因为您最初错误地添加了数据。
删除 Youtube.js 中 param 部分中的数据,它会起作用。
const KEY = "my api key";
export default axios.create({
baseURL: "https://www.googleapis.com/youtube/v3",
params: {
part: "snippet",
maxResults: 5,
key: KEY
}
});
推荐阅读
- sql-server - 如何在 SSIS 中使用 Sharepoint REST API
- javascript - 如何分组并获取具有最大值的元素 - javascript/node.js
- ios - 在没有故事板 Swift 4 的情况下构建 UI 元素
- python - 如何使用 python 代码从二进制文件中读取和提取值?
- python - 关闭emacs中显示大色块的提示
- python - 通过 python 文件到 Robot 框架的命令行参数
- jquery - 在表格主体上方的表格标题中显示选项
- django - 登录期间导致 csrf_token 问题的 Django CustomMiddleware
- java - 如何在微调器上选择项目?
- bash - 如何在不清除屏幕的情况下刷新多行变量输出