我正在做Udacity提供的React nanodegree,正在开发第二个项目Readable。我在下面的代码中尝试使用新分数更新帖子。
handleVote = (vote) => {
console.log(vote);
const url = `${process.env.REACT_APP_BACKEND}/posts/` + this.props.id;
fetch(url, { credentials: 'include',
option : "" + vote,
headers: { 'Authorization': 'whatever-you-want' },
method: 'POST'
}
).then((response) => response.json()
.then((json) => { console.log(json) })
.catch((errors) => { console.log(errors); }));
}
我得到了回复,但似乎有相同的分数。我不确定我做错了什么。我已经尝试添加字符串作为选项,也添加到正文。 “投票”是字符串“upVote”或“downVote”。
在文档中,他们提供了所有内容:
| `POST /posts/:id` | Used for voting on a post. | **option** - [String]: Either `"upVote"` or `"downVote"`. |
如果有人在我愿意帮助之前完成了这个项目。我不确定在请求中指定“upVote”或“downVote”的位置。
答案 0 :(得分:0)
在您的API POST方法中,option:<option-value>
对需要指定为POST请求的body
,例如body: JSON.stringify({ option:
$ {vote} })
,而不是option : "" + vote,
。见Request bodies can be set by passing body parameters。在这种情况下,您还需要在每个this link的标题'Content-Type': 'application/json'
中指定(除'Authorization': 'whatever-you-want'
之外),如@shaochuancs建议的那样。