gpt4 book ai didi

javascript - 如何使用 Star Wars SWAPI API 从服务器搜索端点

转载 作者:行者123 更新时间:2023-11-30 20:17:02 26 4
gpt4 key购买 nike

我正在尝试向服务器端端点添加一个搜索查询,它调用 swapi - Star Wars API https://swapi.co/ 并按姓名列出人员。

这是 App.js 中对后端的 fetch 调用的样子(我为此使用了 reactJS 框架):

import React, { Component } from 'react';

class App extends Component {
constructor() {
super();
this.state = {
searchResult: [],
}
}

searchPersonByName = (event) => {
fetch('/people/?search='+ event.target.value)
.then(response => response.json())
.then(response => {
//let searchResult = JSON.parse(responseBody).results;
console.log(response);
this.setState({ searchResult: response.results });
})
}
render() {
return (
<div className="pageStyle">
<div className="searchBar">
<input type="text"
placeholder="search for a person"
onChange={this.searchPersonByName}>
</input>
{Object.keys(this.state.searchResult).map((item, i) => (
<li key={i}>
<span>{this.state.searchResult[item].name}</span>
</li>
))}
</div>
</div>
);
}
}

export default App;

在后端:

    //Dependencies
const swapi = require('swapi-node');
const express = require('express'); //express server
const app = express();

app.use(express.static('public'))

//Search people endpoint
//format of the search string:
// https://swapi.co/api/people/?search=
app.get('/people', (req, res) => {
let query = req.query.search;
console.log(query);
swapi.get('https://swapi.co/api/people/?search=' + query).then((result) => {
console.log(result.results);
let results = result.results;
res.send({ results });
}).catch((err) => {
console.log(err);
});
});
//server listening on specified port
app.listen(4000, () => console.log('Listening on port 4000!'))

现在搜索查询只返回第一页的人。缺少什么?

最佳答案

您没有使用fetch 请求将搜索词传递给后端。

如果您真的想搜索输入字段中的每个更改,您可以使用 event.target.value 作为搜索词。

searchPersonByName = event => {
fetch(`/people?search=${event.target.value}`)
.then(response => response.json())
.then(response => {
this.setState({ searchResult: response.results });
});
};

您也不需要在后端路由中指定查询参数。

app.get('/people', (req, res) => { ... })

关于javascript - 如何使用 Star Wars SWAPI API 从服务器搜索端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51828868/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com