使用 Rails API 构建一个 React 应用程序
【.com快译】使用React创建项目时,使用动态数据无法保存的构建个问题要怎么办呢?为此,我开始寻找一个充当备份的应用API来解决这一问题。
在本文中,程序我将介绍如何设置和构建一个以React作为前端的使用Rails API的一些要点,以帮助那些和我遇到一样问题的构建个人。
本文计划使用Rails API作为后端,应用React作为前端,程序所以需要学习本文的使用人遵循同样的路径和步骤。
后端:Rails API部分
作为创建Rails API之前的构建个先决条件,建议使用Postgres配置数据库,应用因为它比SQLite更容易部署。程序然后在你的使用目录中找到并创建一个新项目,输入以下命令:
rails new --api --database=postgresql
cd` `<app_name>--database标志是构建个为了选择我们的数据库引擎,这里我们使用Postgresql,应用而--api是为了创建一个基于Rails的API来使用我们需要的东西并跳过我们不会使用的额外配置。
使用编辑器打开项目。然后打开Gemfile并添加rack-cors:
gem rack-cors, :require => rack/cors然后,运行 `bundle install`
在运行新的源码库Rails应用程序之前,必须先将其连接到数据库。接下来这一步,将把新创建的Rails应用程序连接到PostgreSQL数据库,这样就可以在需要时存储和获取配方数据。这步需要输入:`rails db:create`
输出结果将是这样显示:
Created database app_name_development
Created database app_name_test打开终端并运行以下命令来创建控制器和模型:
rails generate model Movie name rating:integer
rails generate controller Movies index create update destroy
rails db:migrate接下来实现控制器中的空方法来让API正常工作:
现在有了一个管理模型的控制器,接着将把一些电影复制seed.rb文件中,以在浏览器中显示它们,测试是否可以将数据转换成json格式。复制以下电影:
Movie.create(name: "Titanic", rating: 5)
Movie.create(name: "We were soldiers", rating: 4)
Movie.create(name: "L’amour quand elle nous tient", rating: 5)
Movie.create(name: "Nobodys Fool", rating: 2)之后,将这四个元素粘贴到项目中运行:rails db:seed
接下来可以开始编写代码了。首先从route.rb开始。如果你打开该文件,你将发现由控制器自动生成的路由。因为我们将为API定义自己的路由,所以我们将删除它们来定义新的路由/ API:
Rails.application.routes.draw do
resources :movies
end要查看你的应用程序,需要打开浏览器窗口并导航到http://localhost:3000。您将看到Rails默认的欢迎页面。但是添加路由后,这意味着http://localhost:3000/movies将获得我们在数据库中的所有电影。也可以在浏览器上安装任何 JSON 查看器扩展以查看格式化数据。b2b信息网
前端:React部分
现在我们有了一个基本的API,让我们使用它来设置前端React应用程序:
npx create_react-appCreate React App 是 Facebook 的一个项目,可帮助您无需任何配置即可快速开始使用 React 应用程序。
首先,确保你安装了Node.js和npm。然后,确保你在Rails目录之外,并运行以下命令来创建react app:
npx create-react-app my_react这将创建一个与我们的API通信的React应用程序。在目录中输入cd my_react并运行npm start后,将在http://localhost:3000上打开它。
React组件
React的主要优点之一是组件的概念,所以我们像下图一样创建我们所需的组件,删除不需要的组件。
在源目录中,我们将创建一个新的文件夹**组件**,并在其中放置要显示的文件。
让我们创建我们的第一个组件。让我们在 todo- app/src/components/Movie.js 中创建一个新文件:
import React, { Component } from react;
class Song extends Component {
render() {
return (
movies
);
}
}
export default Song;这就是我们的组件。云服务器接着将它导入到我们的应用程序文件中,以便将它显示到浏览器中。
import ./App.css;
import Song from ./components/Song;
function App() {
return (
);
}
export default App;使用 axios 获取 API 数据
是时候从后端加载数据了。可以使用任何包来获取/存储数据。这次我们使用 axios。
安装 axios 并在 Movie 组件中导入。
npm install axios --save首先在构造函数中将状态初始化为一个空数组:
constructor(props) {
super(props)
this.state = {
movies: []
}
}由于我们已经在组件中初始化了状态,现在让我们实现 componentDidMount()方法来从 API 加载我们的数据:
componentDidMount() {
axios.get(http://localhost:3000/movies)
.then(response => {
console.log(response)
this.setState({movies: response.data})
})
.catch(error => console.log(error))
}
import axios from axios记住导入axios:
import axios from axios到这里你会因会被cors屏蔽而无法获得你的数据。为了避免这种情况,你必须在config/aplication.rb中使用API:
config.middleware.insert_before 0, Rack::Cors do
allow do
origins http://localhost:3000 resource *, :headers => :any, :methods => [:get, :post, :put, :delete, :options]
end
end现在我们知道我们可以从 API 中获取想法,让我们在 React 组件中使用它们。我们可以更改渲染函数以从状态迭代列表想法并显示它们中的每一个:
现在我们知道我们能够从API中获取思想,让我们在React组件中使用它们。我们可以改变render函数来遍历来自状态的列表想法,并显示它们中的每一个:
render() {
return (
{this.state.movies.map((movie) => {
return(
{movie.name}:{movie.rating}
)
})}
);
}现在我们可以在浏览器中看到我们的数据了。
【译稿,合作站点转载请注明原文译者和出处为.com】
相关文章
解决U盘写保护问题的有效方法(终结U盘写保护困扰,实现格式化的妙招)
摘要:U盘作为一种重要的移动存储设备,常常用于数据传输和备份,然而有时我们会遇到U盘不能格式化的困扰,这往往是由于U盘被设置了写保护的功能所导致的。本文将针对这一问题,提供一些有效的方法...2025-11-04清华大学人工智能(在创新前沿,清华大学人工智能培养顶尖人才)
摘要:在当今科技快速发展的时代,人工智能作为一项重要的前沿技术,对于推动社会进步和经济发展具有重要意义。而清华大学作为国内顶尖高校之一,一直致力于人工智能的研究和教育培养。本文将介绍清华...2025-11-04以R5玩LOL的体验及优劣势分析(R5处理器在LOL游戏中的性能表现与应用推荐)
摘要:近年来,随着电竞的飞速发展,越来越多的游戏玩家开始关注电脑硬件配置对游戏性能的影响。作为一款全球知名的竞技游戏,《英雄联盟》LOL)尤为受到广大玩家的热爱。而R5处理器作为AMD...2025-11-04- 摘要:随着智能手机和电子设备的日益普及,人们对于处理器的性能和效能要求也越来越高。苹果和三星作为行业内的巨头,其自家研发的处理器备受瞩目。本文将从性能、功耗、制程工艺等多个方面来比较苹果...2025-11-04
 如何更换SSD硬盘(教你一步步更换电脑的SSD硬盘,提升系统速度和性能)
摘要:随着科技的不断进步,SSD固态硬盘)正逐渐取代传统的机械硬盘成为首选。更换SSD硬盘可以大幅提升电脑的速度和性能,让你的电脑焕然一新。本文将为你提供一个简明易懂的教程,教你如何更...2025-11-04S8号码归属设置指南(如何设置S8号码归属信息以保护个人隐私)
摘要:在如今信息爆炸的时代,保护个人隐私变得愈发重要。S8号码归属设置提供了一种简单有效的方式,让用户能够在通讯过程中保持匿名性。本文将为您详细介绍S8号码归属设置的方法及其重要性。...2025-11-04

最新评论