ホームページ > ウェブフロントエンド > jsチュートリアル > AJAX と API の実験: 初心者向けの包括的なガイド

AJAX と API の実験: 初心者向けの包括的なガイド

王林
リリース: 2024-09-05 06:53:03
オリジナル
609 人が閲覧しました

Experimenting with AJAX and APIs: A Comprehensive Guide for Beginners

1. AJAX と API の概要

AJAXとは何ですか?

AJAX は、Asynchronous JavaScript and XML の略です。これは、ページ全体をリロードすることなく、動的でインタラクティブな Web ページを作成するために Web 開発で使用される手法です。 AJAX を使用すると、サーバーからデータをリクエストし、Web ページの一部を非同期的に更新できます。つまり、ユーザーはリクエストがバックグラウンドで処理されている間もページとの対話を続けることができます。

APIとは何ですか?

API (アプリケーション プログラミング インターフェイス) は、さまざまなソフトウェア アプリケーションが相互に通信できるようにする一連のルールと定義です。 Web 開発のコンテキストでは、Web サーバーとの対話、データの取得、データの送信に API がよく使用されます。 API はパブリック (誰でも使用可能) またはプライベート (特定のユーザーまたはアプリケーションに制限) にすることができます。

AJAX と API を併用する理由

AJAX と API を一緒に使用すると、Web アプリケーションでデータを動的に取得、送信、更新できるようになります。この組み合わせにより、ページを定期的に再読み込みすることなくスムーズなユーザー エクスペリエンスを提供する、リッチで応答性の高いインタラクティブな Web アプリケーションを構築できます。

AJAX と API の実際のアプリケーション

  • ソーシャル メディア フィード: Twitter や Facebook などのプラットフォームは AJAX を使用して、ページを再読み込みせずに新しい投稿やコメントを動的に読み込みます。
  • 天気予報アプリケーション: 天気予報アプリは API からリアルタイムの気象データを取得し、現在の状況と予報を表示します。
  • E コマース Web サイト: オンライン ストアは、商品のフィルタリング、ショッピング カートの更新、ページを再読み込みせずに注文を処理するなどの機能に AJAX を使用します。
  • 地図と位置情報サービス: Google マップなどのサービスは、AJAX を使用して、ユーザー入力に基づいて地図タイルと位置データを動的に読み込みます。

2. AJAX の概要

非同期 JavaScript および XML (AJAX) について

AJAX は単一のテクノロジーではなく、連携して動作する複数のテクノロジーの組み合わせです。

  • JavaScript: ユーザー操作を処理し、非同期リクエストを行うために使用されます。
  • XML/JSON: クライアントとサーバー間でデータを交換するための形式。現在では、JSON (JavaScript Object Notation) がより一般的に使用されています。
  • HTML/CSS: Web ページのコンテンツの構造とスタイルを設定するために使用されます。
  • DOM (ドキュメント オブジェクト モデル): Web ページの構造を表し、JavaScript が Web ページと対話できるようにします。

AJAX の基本概念

  1. 非同期通信: AJAX を使用すると、Web ページがサーバーと非同期でデータを送受信できるようになります。つまり、ブラウザーは、他のタスクを続行する前にサーバーの応答を待つ必要がありません。
  2. 部分的なページ更新: ページ全体をリロードする代わりに、AJAX は Web ページの特定の部分を更新し、パフォーマンスとユーザー エクスペリエンスを向上させることができます。
  3. クライアント/サーバー通信: AJAX により、クライアント側 JavaScript がサーバー側 API と通信してデータを取得または送信できるようになります。

AJAX の仕組み

  1. ユーザーアクション: ユーザーは、ボタンのクリックやフォームへのテキストの入力などのイベントをトリガーします。
  2. JavaScript の実行: JavaScript はイベントをキャプチャし、XMLHttpRequest オブジェクトを作成します。
  3. サーバー リクエスト: XMLHttpRequest オブジェクトはサーバーにリクエストを送信します。
  4. サーバー処理: サーバーはリクエストを処理し、クライアントに応答を送り返します。
  5. クライアント更新: JavaScript はサーバーの応答を受信し、Web ページを動的に更新します。

JavaScript を使用した最初の AJAX リクエスト

AJAX の基本を説明するために、簡単な HTML ページを作成し、JavaScript を使用して AJAX リクエストをサーバーに送信してみましょう。

ステップバイステップガイド:

  1. HTML ファイルを作成します:
<html lang="en">   <head>  
    <meta charset="UTF-8">  
    <meta name="viewport" content="width=device-width, initial-scale=1.0">  
    <title>AJAX Example</title>   </head>   <body>  
    <h1>AJAX Request Example</h1>  
    <button id="loadData">Load Data</button>  
    <div id="dataContainer"></div>  
    <script src="app.js"></script>   </body>   </html>
ログイン後にコピー

2.JavaScript ファイル (app.js) を作成します:

    document.getElementById('loadData').addEventListener('click', function() {  
        const xhr = new XMLHttpRequest();  
        xhr.open('GET', 'https://jsonplaceholder.typicode.com/posts', true);  

        xhr.onload = function() {  
            if (xhr.status === 200) {  
                document.getElementById('dataContainer').innerHTML = xhr.responseText;  
            } else {  
                console.error('Failed to load data');  
            }  
        };  

        xhr.send();  
    });
ログイン後にコピー

3.AJAX リクエストをテストします:

  • Open the HTML file in a web browser.
  • Click the “Load Data” button to trigger the AJAX request.
  • Observe the fetched data displayed in the dataContainer div

3. Understanding APIs

Definition of APIs

An API (Application Programming Interface) is a set of rules and protocols that allows different software applications to communicate with each other. APIs define the methods and data formats that applications can use to interact with each other, making it easier to build software by providing reusable components and services.

Types of APIs

  1. REST (Representational State Transfer): REST APIs are the most common type of API used in web development. They are based on standard HTTP methods like GET, POST, PUT, and DELETE and are stateless, meaning each request is independent of others.
  2. SOAP (Simple Object Access Protocol): SOAP is a protocol for exchanging structured information in web services. It uses XML for message formatting and relies on application layer protocols like HTTP and SMTP.
  3. GraphQL: A newer API standard that allows clients to request exactly the data they need. Unlike REST, GraphQL uses a single endpoint and supports complex queries and mutations.

API Endpoints and Methods

  • Endpoint: An endpoint is a specific URL where an API is accessed. It represents a specific function or resource within the API.
  • HTTP Methods: The method used to interact with an endpoint. Common methods include:
  • GET: Retrieve data from the server.
  • POST: Send data to the server to create a new resource.
  • PUT: Update an existing resource on the server.
  • DELETE: Remove a resource from the server.

Working with JSON and XML Formats

APIs typically use JSON (JavaScript Object Notation) or XML (eXtensible Markup Language) to format data. JSON is more lightweight and easier to read, making it the preferred choice for most modern APIs.

Example JSON Response:

{  
   "id": 1,  
   "title": "Example Post",  
   "body": "This is an example of a post.",  
   "userId": 1  
}
ログイン後にコピー

Example XML Response:

<post>  
   <id>1</id>  
   <title>Example Post</title>  
   <body>This is an example of a post.</body>  
   <userId>1</userId>  
</post>
ログイン後にコピー

4. Making Your First AJAX Request

Setting Up a Basic HTML and JavaScript Environment

To make your first AJAX request, you need a basic HTML and JavaScript environment. Follow these steps:

  1. Create an HTML File:
    <!DOCTYPE html>  
    <html lang="en">  
    <head>  
        <meta charset="UTF-8">  
        <meta name="viewport" content="width=device-width, initial-scale=1.0">  
        <title>First AJAX Request</title>  
    </head>  
    <body>  
        <h1>Fetch Data with AJAX</h1>  
        <button id="fetchDataBtn">Fetch Data</button>  
        <div id="dataDisplay"></div>  
        <script src="ajax.js"></script>  
    </body>  
    </html>
ログイン後にコピー

Create a JavaScript File (ajax.js):

   document.getElementById('fetchDataBtn').addEventListener('click', function() {  
        const xhr = new XMLHttpRequest();  
        xhr.open('GET', 'https://jsonplaceholder.typicode.com/posts/1', true);  

        xhr.onload = function() {  
            if (xhr.status === 200) {  
                const data = JSON.parse(xhr.responseText);  
                document.getElementById('dataDisplay').innerHTML = `  
                    <h2>${data.title}</h2>  
                    <p>${data.body}</p>  
                `;  
            } else {  
                console.error('Error fetching data');  
            }  
        };  

        xhr.onerror = function() {  
            console.error('Request failed');  
        };  

        xhr.send();  
    });
ログイン後にコピー

3.Test the AJAX Request:

  • Open the HTML file in a web browser.
  • Click the “Fetch Data” button to trigger the AJAX request.
  • Observe the fetched data displayed in the dataDisplay div.

Sending a GET Request Using XMLHttpRequest

The XMLHttpRequest object is used to interact with servers. It allows you to make HTTP requests to retrieve or send data without reloading the page.

Steps to Send a GET Request:

  1. Create an XMLHttpRequest Object: const xhr = new XMLHttpRequest();
  2. Open a Connection: xhr.open('GET', 'https://jsonplaceholder.typicode.com/posts/1', true);
  3. Define a Callback Function: xhr.onload = function() { /* Handle response */ };
  4. Send the Request: xhr.send();

Handling Server Responses

When the server responds to an AJAX request, the response is available in the xhr.responseText property. You can use JavaScript to process this data and update the webpage dynamically.

Debugging AJAX Requests

To debug AJAX requests, use browser developer tools:

  • Network Tab: Monitor HTTP requests and responses.
  • Console Tab: Log errors and messages for debugging.

5. Using Fetch API for AJAX Requests

Introduction to Fetch API

The Fetch API is a modern alternative to XMLHttpRequest for making HTTP requests. It provides a more powerful and flexible feature set and returns Promises, making it easier to handle asynchronous operations.

Making GET and POST Requests with Fetch

Example of a GET Request with Fetch:

fetch('https://jsonplaceholder.typicode.com/posts/1')<br><br>
    .then(response => response.json())<br><br>
    .then(data => {<br><br>
        document.getElementById('dataDisplay').innerHTML = <br>
            &lt;h2&gt;${data.title}&lt;/h2&gt;  <br>
            &lt;p&gt;${data.body}&lt;/p&gt;  <br>
;<br><br>
    })<br><br>
    .catch(error => console.error('Error fetching data:', error));<br>
ログイン後にコピー




Example of a POST Request with Fetch:


fetch('https://jsonplaceholder.typicode.com/posts', {<br><br>
    method: 'POST',<br><br>
    headers: {<br><br>
        'Content-Type': 'application/json'<br><br>
    },<br><br>
    body: JSON.stringify({<br><br>
        title: 'New Post',<br><br>
        body: 'This is a new post.',<br><br>
        userId: 1<br><br>
    })<br><br>
})<br><br>
.then(response => response.json())<br><br>
.then(data => console.log('Post created:', data))<br><br>
.catch(error => console.error('Error creating post:', error));<br>
ログイン後にコピー




Handling JSON Responses

The Fetch API provides a json() method to parse the response body as JSON. This method returns a Promise that resolves with the parsed JSON data.

Error Handling with Fetch

Use .catch() to handle errors in Fetch requests. This method catches any errors that occur during the fetch operation or while processing the response.

6. Interacting with RESTful APIs

What is REST?

REST (Representational State Transfer) is an architectural style for designing networked applications. RESTful APIs follow specific conventions for managing resources over the web.

RESTful API Conventions

  • Stateless: Each request from a client to a server must contain all the information needed to understand and process the request.
  • Resource-Based: Resources (such as users, posts, or products) are identified by URLs.
  • Standard Methods: RESTful APIs use standard HTTP methods (GET, POST, PUT, DELETE) to perform operations on resources.

Sending Requests to RESTful APIs

Example of Sending a GET Request to a RESTful API:

fetch('https://jsonplaceholder.typicode.com/posts')<br><br>
    .then(response => response.json())<br><br>
    .then(posts => {<br><br>
        posts.forEach(post => {<br><br>
            console.log(post.title);<br><br>
        });<br><br>
    })<br><br>
    .catch(error => console.error('Error fetching posts:', error));<br>
ログイン後にコピー




CRUD Operations with AJAX

CRUD stands for Create, Read, Update, Delete — four fundamental operations for managing data.

  • Create: Use POST to add new data.
  • Read: Use GET to retrieve data.
  • Update: Use PUT or PATCH to modify existing data.
  • Delete: Use DELETE to remove data.

Example of CRUD Operations with Fetch:

CRUD Operations with AJAX

CRUD stands for Create, Read, Update, Delete—four fundamental operations for managing data.

Create: Use POST to add new data.

Read: Use GET to retrieve data.

Update: Use PUT or PATCH to modify existing data.

Delete: Use DELETE to remove data.

Example of CRUD Operations with Fetch:

7. Advanced AJAX Techniques

Handling CORS (Cross-Origin Resource Sharing)

CORS (Cross-Origin Resource Sharing) is a security feature that restricts web pages from making requests to a different domain than the one that served the web page. To work with APIs across different domains, the server must enable CORS.

Using Promises for Better AJAX Management

Promises simplify the management of asynchronous operations in JavaScript. They provide a more readable way to handle AJAX requests compared to callbacks.

Example of Promises with Fetch:

fetch('/api/posts')<br><br>
    .then(response => response.json())<br><br>
    .then(data => console.log(data))<br><br>
    .catch(error => console.error('Error:', error));<br>
ログイン後にコピー




Working with Async/Await for Cleaner Code

Async/Await is syntactic sugar built on top of Promises, making asynchronous code easier to read and write.

Example of Async/Await:

async function fetchPosts() {<br><br>
    try {<br><br>
        const response = await fetch('/api/posts');<br><br>
        const data = await response.json();<br><br>
        console.log(data);<br><br>
    } catch (error) {<br><br>
        console.error('Error:', error);<br><br>
    }<br><br>
}  

<p>fetchPosts();<br>
</p>
ログイン後にコピー




Chaining Multiple AJAX Requests

To handle multiple AJAX requests in sequence, use Promises or Async/Await to chain requests.

Example of Chaining AJAX Requests:

fetch('/api/user')<br><br>
    .then(response => response.json())<br><br>
    .then(user => fetch(/api/posts?userId=${user.id}))<br><br>
    .then(response => response.json())<br><br>
    .then(posts => console.log(posts))<br><br>
    .catch(error => console.error('Error:', error));<br>
ログイン後にコピー



  1. Building a Real-World Application with AJAX and APIs

Setting Up a Sample Project

To build a real-world application, you need a backend API and a frontend interface. For this example, we’ll use a simple API to fetch weather data.

Integrating a Third-Party API (e.g., OpenWeatherMap)

  1. Sign Up for an API Key: Register for an API key on the OpenWeatherMap website.
  2. Fetch Weather Data: Use AJAX to fetch weather data based on the user’s input.

Example of Fetching Weather Data:

const apiKey = 'YOUR_API_KEY';<br><br>
const city = 'London';<br><br>
fetch(https://api.openweathermap.org/data/2.5/weather?q=${city}&amp;appid=${apiKey})<br><br>
    .then(response => response.json())<br><br>
    .then(data => {<br><br>
        document.getElementById('weatherDisplay').innerHTML = <br>
            &lt;h2&gt;Weather in ${data.name}&lt;/h2&gt;  <br>
            &lt;p&gt;Temperature: ${(data.main.temp - 273.15).toFixed(2)}°C&lt;/p&gt;  <br>
            &lt;p&gt;Condition: ${data.weather[0].description}&lt;/p&gt;  <br>
;<br><br>
    })<br><br>
    .catch(error => console.error('Error fetching weather data:', error));<br>
ログイン後にコピー




Creating Dynamic and Interactive Elements with AJAX

Use JavaScript to create dynamic elements that update based on user input or server responses.

Example of Creating Dynamic Elements:

document.getElementById('searchButton').addEventListener('click', function() {<br><br>
    const city = document.getElementById('cityInput').value;<br><br>
    fetchWeatherData(city);<br><br>
});  

<p>function fetchWeatherData(city) {<br><br>
    fetch(https://api.openweathermap.org/data/2.5/weather?q=${city}&amp;appid=${apiKey})<br><br>
        .then(response => response.json())<br><br>
        .then(data => {<br><br>
            document.getElementById('weatherDisplay').innerHTML = <br>
                &lt;h2&gt;Weather in ${data.name}&lt;/h2&gt;  <br>
                &lt;p&gt;Temperature: ${(data.main.temp - 273.15).toFixed(2)}°C&lt;/p&gt;  <br>
                &lt;p&gt;Condition: ${data.weather[0].description}&lt;/p&gt;  <br>
;<br><br>
        })<br><br>
        .catch(error => console.error('Error fetching weather data:', error));<br><br>
}<br>
</p>
ログイン後にコピー




Displaying Data from API Responses

Use HTML and CSS to format the data received from APIs. JavaScript allows you to manipulate the DOM and display the data dynamically.

9. Optimizing AJAX Requests

Debouncing and Throttling API Calls

Debouncing and Throttling are techniques used to limit the rate at which a function is executed. This is especially useful when working with APIs to avoid unnecessary requests.

Example of Debouncing:

function debounce(func, delay) {<br><br>
    let timeout;<br><br>
    return function(...args) {<br><br>
        clearTimeout(timeout);<br><br>
        timeout = setTimeout(() => func.apply(this, args), delay);<br><br>
    };<br><br>
}  

<p>const fetchWeatherDebounced = debounce(fetchWeatherData, 300);<br><br>
document.getElementById('cityInput').addEventListener('input', function() {<br><br>
    fetchWeatherDebounced(this.value);<br><br>
});<br>
</p>
ログイン後にコピー




Managing Request States and Loading Indicators

Use JavaScript to manage the state of your AJAX requests and provide feedback to users, such as loading indicators or error messages.

Example of Managing Request States:

function fetchWeatherData(city) {<br><br>
    const loader = document.getElementById('loader');<br><br>
    loader.style.display = 'block'; // Show loader  
<div class="highlight js-code-highlight">
<pre class="highlight plaintext">fetch(`https://api.openweathermap.org/data/2.5/weather?q=${city}&amp;appid=${apiKey}`)  
    .then(response =&gt; response.json())  
    .then(data =&gt; {  
        loader.style.display = 'none'; // Hide loader  
        // Display weather data...  
    })  
    .catch(error =&gt; {  
        loader.style.display = 'none'; // Hide loader  
        console.error('Error fetching weather data:', error);  
    });  
ログイン後にコピー

}

Enter fullscreen mode Exit fullscreen mode




Caching API Responses

To improve performance, cache API responses using JavaScript or a service worker. This reduces the number of requests sent to the server and speeds up the application.

Example of Caching API Responses:

const cache = new Map();  

<p>function fetchWeatherData(city) {<br><br>
    if (cache.has(city)) {<br><br>
        displayWeatherData(cache.get(city)); // Use cached data<br><br>
    } else {<br><br>
        fetch(https://api.openweathermap.org/data/2.5/weather?q=${city}&amp;appid=${apiKey})<br><br>
            .then(response => response.json())<br><br>
            .then(data => {<br><br>
                cache.set(city, data); // Cache the response<br><br>
                displayWeatherData(data);<br><br>
            })<br><br>
            .catch(error => console.error('Error fetching weather data:', error));<br><br>
    }<br><br>
}<br>
</p>
ログイン後にコピー




Best Practices for Efficient AJAX

  1. Minimize Requests: Combine multiple requests into one when possible.
  2. Use HTTP Caching: Leverage browser caching to reduce server load.
  3. Optimize Data: Request only the necessary data fields.
  4. Handle Errors Gracefully: Provide meaningful feedback to users in case of errors.

10. Error Handling and Debugging

Common AJAX Errors and How to Fix Them

  1. 404 Not Found: The requested resource is not available on the server.
  2. 500 Internal Server Error: The server encountered an error while processing the request.
  3. Network Errors: Issues with internet connectivity or server availability.

Using Browser Developer Tools for Debugging

Use browser developer tools to inspect network requests, view responses, and debug JavaScript code:

  • Network Tab: View all HTTP requests and responses.
  • Console Tab: Log messages and errors for debugging.

Graceful Error Handling in Your Application

Provide users with clear error messages and fallback options when AJAX requests fail.

Example of Graceful Error Handling:

fetch('https://api.example.com/data')<br><br>
    .then(response => response.json())<br><br>
    .then(data => {<br><br>
        // Display data...<br><br>
    })<br><br>
    .catch(error => {<br><br>
        console.error('Error fetching data:', error);<br><br>
        document.getElementById('errorMessage').innerText = 'Failed to load data. Please try again later.';<br><br>
    });<br>
ログイン後にコピー



  1. Security Considerations for AJAX and APIs

Preventing Common Vulnerabilities (e.g., XSS, CSRF)

  • XSS (Cross-Site Scripting): Sanitize user input to prevent malicious scripts from being executed.
  • CSRF (Cross-Site Request Forgery): Use anti-CSRF tokens to prevent unauthorized actions.

Safeguarding API Keys and Sensitive Data

  • Environment Variables: Store API keys in environment variables, not in client-side code.
  • Secure Storage: Use secure storage solutions for sensitive data.

Securely Handling User Input and API Responses

  • Input Validation: Validate all user input on the client and server sides.
  • Content Security Policy: Implement a Content Security Policy (CSP) to mitigate XSS attacks.

12. Conclusion and Next Steps

Recap of Key Concepts

In this tutorial, you’ve learned how to use AJAX and APIs to build dynamic web applications. You explored the basics of AJAX, the Fetch API, interacting with RESTful APIs, and advanced techniques like error handling, optimization, and security.

Exploring More Advanced AJAX and API Techniques

As you continue learning, explore more advanced topics like:

  • WebSockets: Real-time communication for live updates and interactive features.
  • Service Workers: Offline capabilities and background synchronization.
  • GraphQL: Flexible data querying for efficient API interactions.

By Peymaan Abedinpour | پیمان عابدین پور

以上がAJAX と API の実験: 初心者向けの包括的なガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
前の記事:これらのキーを使用して上級レベルのテストを作成します (JavaScript でのテスト要求) 次の記事:コードの日 / 日: スポーツでゲッターとセッターを探索する
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
関連トピック
詳細>
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート