为我们的restful服务添加一个客户端

举报
码乐 发表于 2024/03/29 10:49:29 2024/03/29
【摘要】 简介这一节我们简单了解一个前端框架react,并用它做一个初步的客户端页面,以配合我们的后端restful接口。 1 工具安装首先,将React应用配置为我们的前端。新建一个控制台界面,linux 下载并安装 nodecurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash或者wget -...

简介

这一节我们简单了解一个前端框架react,并用它做一个初步的客户端页面,以配合我们的后端restful接口。

1 工具安装

首先,将React应用配置为我们的前端。

新建一个控制台界面,linux 下载并安装 node

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

或者

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

激活命令行

command -v nvm\

重启命令行控制台界面,即可完成安装.

1.1 安装React 并安装项目

我们将使用出色的npm-create-react-app包来快速启动一个新的React项目。这将生成我们的项目样板并通过一个命令安装所需的依赖项!

npm使管理和安装多个软件包变得非常简单。 这是在本地安装软件包的一种改进方法,无需安装污染全局名称空间。这是安装React的推荐方法以及我们将使用的方法

在todo目录创建前端app

apt install npm   # 40M 上下
npx create-react-app fronts  

进入frontend 并启动应用

$ cd fronts
$ npm start

1.2 在前端app构造模拟数据

代码如下:

	import React, { Component } from 'react';
	const list = [ {
	    "id":1,
	    "title":"1st todo",
	    "body":"Learn Django properly."
	    },
	    {
	    "id":2,
	    "title":"Second item",
	    "body":"Learn Python."
	    },
	        {
	    "id":3,
	    "title":"Learn HTTP",
	    "body":"It's important."
	   } ]

将列表加载到组件的状态,然后使用JavaScript数组方法map()显示所有项目.可以复制代码,只需要看到如何与api配合工作。

	class App extends Component {
	    constructor(props) {
	        super(props);
	        this.state = { list };
	}

	render() {
	    return (
	            <div>
	            {this.state.list.map(item => (
	             <div key={item.id}>
	                    <h1>{item.title}</h1>
	                    <p>{item.body}</p>
	                    </div>
	        ))}
	            </div>
	     );
	    } }
	export default App;

我们已将列表加载到App组件的状态中,然后使用map遍历每个组件列表中的项目,显示每个项目的标题和正文。

我们还添加了ID作为密钥,这是一个react特定的要求;该ID由Django自动添加到我们每个数据库字段中。

注意:如果在前端看见js错误,只需要重新安装npm,该修复程序通常是npm-install,然后尝试重新启动npm。

如果这样不起作用,则删除您的node_modules文件夹并运行npm install。这样就可以在短时间内解决99%的问题。欢迎使用现代JavaScript。 :)

1.3 连接前后端

使用 django api 替换 mock 数据。

发出HTTP请求的两种流行方法:内置FetchAPI或axios它带有几个附加功能。

在此示例中,我们将使用axios。使用Control-c停止运行的应用程序。然后安装axios。

在前端安装 axios, 用于前端发起request 请求。

npm install axios

如果axios 安装失败,使用 内置的fetch

//src/App.js
import React, { Component } from 'react';
//import axios from 'axios'; // new
class App extends Component {
	state = {
		todos: []
	};
// new
componentDidMount() {
this.getTodos();
}
// new
getTodos() {
fetch('http://127.0.0.1:2000/api/')
.then(response )
.then(data => this.setState({ totalReactPackages: data.total }));
//.catch(err => {
//console.log(err);
//})
//);
}
render() {
	return ( <div> {this.state.todos.map(item => (
	<div key={item.id}> <h1>{item.title}</h1> <span>{item.body}</span> </div>
	))}
	</div>
	);
} }
export default App;

2 小结

前后端分离将增强web站点的灵活性。

接下来增强我们的API,使其支持多个HTTP动作,例如POST(添加新待办事项),PUT(更新现有的待办事项)和DELETE(删除待办事项)

然后我们将构建一个健壮的博客 API,该API支持完整的CRUD(创建-读取-更新-删除)功能,
随后再向其中添加用户身份验证,以便用户可以登录,注销,然后通过我们的API注册帐户。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。