Heim  >  Artikel  >  Web-Frontend  >  So erstellen Sie eine skalierbare API-Schnittstelle mit React und GraphQL

So erstellen Sie eine skalierbare API-Schnittstelle mit React und GraphQL

王林
王林Original
2023-09-27 10:40:441394Durchsuche

So erstellen Sie eine skalierbare API-Schnittstelle mit React und GraphQL

So erstellen Sie skalierbare API-Schnittstellen mit React und GraphQL

Da die Komplexität von Webanwendungen immer weiter zunimmt, wird der Aufbau skalierbarer API-Schnittstellen immer wichtiger. React und GraphQL sind zwei beliebte Technologien, die uns beim Aufbau effizienter, flexibler und skalierbarer APIs helfen. In diesem Artikel untersuchen wir, wie man React und GraphQL zum Erstellen skalierbarer API-Schnittstellen verwendet, und geben spezifische Codebeispiele.

React ist eine JavaScript-Bibliothek zum Erstellen von Benutzeroberflächen. Es bietet eine Möglichkeit, Schnittstellen in wiederverwendbare Komponenten zu zerlegen, sodass Entwickler problemlos komplexe Benutzeroberflächen erstellen können. GraphQL ist eine Abfragesprache und Laufzeitumgebung, die dafür konzipiert ist, dass der Client genau die Daten erhält, die er benötigt. Es bietet Flexibilität und Effizienz für den Datenaustausch zwischen Clients und Servern durch ein leistungsstarkes Typsystem und eine Abfragesprache.

Im Folgenden stellen wir Ihnen Schritt für Schritt vor, wie Sie mit React und GraphQL eine skalierbare API-Schnittstelle erstellen. Wir werden Node.js als Backend-Server und Express.js als Server-Framework verwenden.

Schritt 1: Installieren Sie die erforderlichen Abhängigkeiten
Zuerst müssen wir die relevanten Abhängigkeiten für React und GraphQL installieren. Verwenden Sie über die Befehlszeile npm oder Yarn, um die folgenden Abhängigkeiten zu installieren:

npm install react react-dom graphql express express-graphql

Schritt 2: Express-Server einrichten
Als nächstes richten wir den Express-Server ein und erstellen den GraphQL-Endpunkt. Erstellen Sie im Stammverzeichnis des Projekts eine Datei mit dem Namen server.js und fügen Sie den folgenden Code hinzu:

const express = require('express');
const { graphqlHTTP } = require('express-graphql');
const { buildSchema } = require('graphql');

// 创建GraphQL schema
const schema = buildSchema(`
  type Query {
    hello: String
  }
`);

// 定义GraphQL resolver
const root = {
  hello: () => 'Hello, World!'
};

// 创建Express app
const app = express();

// 设置GraphQL端点
app.use('/graphql', graphqlHTTP({
  schema: schema,
  rootValue: root,
  graphiql: true
}));

// 启动服务器
app.listen(4000, () => {
  console.log('GraphQL server is running at http://localhost:4000/graphql');
});

Im obigen Code haben wir zunächst ein einfaches GraphQL-Schema mit der Funktion buildSchema erstellt, wobei A Das Abfragefeld mit dem Namen hello ist definiert. Anschließend erstellen wir ein root-Objekt, das die Parser-Funktion für das Abfragefeld enthält. Schließlich haben wir eine Express-Anwendung erstellt und den GraphQL-Endpunkt mithilfe der graphqlHTTP-Middleware eingerichtet. buildSchema函数创建了一个简单的GraphQL schema,其中定义了一个名为hello的查询字段。然后,我们创建了一个root对象,其中包含了查询字段的解析器函数。最后,我们创建了一个Express应用程序并使用graphqlHTTP中间件设置了GraphQL端点。

第三步:创建React组件
在项目的根目录下,创建一个名为App.js的文件,添加以下代码:

import React from 'react';
import { gql, useQuery } from '@apollo/client';

// 定义GraphQL查询
const GET_HELLO = gql`
  query {
    hello
  }
`;

function App() {
  const { loading, error, data } = useQuery(GET_HELLO);

  if (loading) return <p>Loading...</p>;
  if (error) return <p>Error :(</p>;

  return (
    <div>
      <h1>{data.hello}</h1>
    </div>
  );
}

export default App;

在上述代码中,我们使用了@apollo/client库来执行GraphQL查询。我们定义了一个名为GET_HELLO的查询,并使用useQuery钩子来执行该查询。根据查询结果的不同状态,我们返回不同的组件。

第四步:渲染React应用
在项目的根目录下,编辑index.js文件并添加以下代码:

import React from 'react';
import ReactDOM from 'react-dom';
import { ApolloProvider, ApolloClient, InMemoryCache } from '@apollo/client';
import App from './App';

// 创建Apollo客户端
const client = new ApolloClient({
  uri: 'http://localhost:4000/graphql',
  cache: new InMemoryCache()
});

ReactDOM.render(
  <React.StrictMode>
    <ApolloProvider client={client}>
      <App />
    </ApolloProvider>
  </React.StrictMode>,
  document.getElementById('root')
);

我们使用@apollo/client库创建了一个Apollo客户端,并设置了GraphQL端点的URL。然后,我们使用ApolloProvider

Schritt 3: React-Komponente erstellen

Erstellen Sie im Stammverzeichnis des Projekts eine Datei mit dem Namen App.js und fügen Sie den folgenden Code hinzu:

npm start

Im obigen Code haben wir @apollo/client Bibliothek zum Ausführen von GraphQL-Abfragen. Wir definieren eine Abfrage namens <code>GET_HELLO und verwenden den Hook useQuery, um die Abfrage auszuführen. Abhängig vom Status der Abfrageergebnisse geben wir unterschiedliche Komponenten zurück.

Schritt 4: Rendern Sie die React-Anwendung.

Bearbeiten Sie im Stammverzeichnis des Projekts die Datei index.js und fügen Sie den folgenden Code hinzu:
rrreee

Wir haben einen Apollo-Client mit dem Code @apollo/clienterstellt > Bibliothek und legt die URL des GraphQL-Endpunkts fest. Anschließend haben wir den Apollo-Client mithilfe der Komponente ApolloProvider an die React-Anwendung gebunden. 🎜🎜Schritt 5: Führen Sie die Anwendung aus 🎜Verwenden Sie in der Befehlszeile den folgenden Befehl, um die Anwendung zu starten: 🎜rrreee🎜Jetzt können wir die GraphQL-Schnittstelle anzeigen, indem wir auf http://localhost:4000/graphql und auf http :/ zugreifen. /localhost:3000, um auf unsere React-Anwendung zuzugreifen. 🎜🎜Fazit🎜In diesem Artikel wird erläutert, wie Sie mit React und GraphQL eine skalierbare API-Schnittstelle erstellen. Mit Beispielcode für React und GraphQL demonstrieren wir, wie man einen Express-Server einrichtet, ein GraphQL-Schema und einen Resolver erstellt und GraphQL-Abfragen in einer React-Anwendung ausführt. Mithilfe von React und GraphQL können wir effiziente, flexible und erweiterbare API-Schnittstellen erstellen, um den Skalierbarkeitsanforderungen besser gerecht zu werden. 🎜

Das obige ist der detaillierte Inhalt vonSo erstellen Sie eine skalierbare API-Schnittstelle mit React und GraphQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn