Integrating API Requests for Dynamic Tutor Interaction

Welcome back! In the previous lesson, you set up a basic interface for your personal tutor using ASP.NET Core Razor Pages and HTML. This laid the foundation for creating a user-friendly educational web application. Now, we will take the next step by connecting this interface to our backend API. This connection is crucial for transforming our static interface into a dynamic, interactive tutoring experience. By the end of this lesson, you will understand how to integrate the frontend with the backend, enabling real-time communication between the student and the tutor system.

Understanding Fetch API

In this lesson, we will enhance our tutor interface by connecting it to the backend API using the Fetch API. This tool will allow us to capture student input and send it to the server, transforming our tutor into a dynamic application.

The Fetch API is a modern interface that allows you to make network requests from your web page. It provides a more powerful and flexible feature set for handling HTTP requests and responses. With Fetch, you can send and receive data from the server in the background, creating a smoother and more interactive educational experience.

Here's how it works:

  1. Making a Request: When you want to get or send data, you use the fetch() function. You tell it where to send the request (the URL) and what kind of request it is.
  2. Handling the Response: After the request is sent, the server will reply. The Fetch API lets you handle this reply using .then(). You can think of this as receiving an answer from your tutor.
  3. Dealing with Errors: Sometimes things go wrong, like if the server is down. The Fetch API lets you handle these problems using .catch(), so your web page can show a message or try again.

Here is a simple example of how the Fetch API works within a function:

Initializing Tutor Variables

Now that we have a basic understanding of the Fetch API, let's prepare our tutor application by initializing some variables to store the current session and user IDs. These variables will help us manage and track each tutoring session as we implement dynamic functionalities.

Auto-Starting a New Session

To provide a seamless experience, we can automatically start a new session when the page loads. This ensures the user is ready to interact with the tutor immediately.

Updating the startNewSession Function

Previously, the startNewSession function simply cleared the chat history. Now, we will update it to initialize a new tutoring session by making a Fetch request to the backend. The endpoint and payload should match your backend API.

Appending Messages to the Chat

To display messages in the chat interface, use a helper function that creates and appends message elements for both the user and the assistant.

Enhancing the sendQuery Function

The sendQuery function will now send the student's question to the server and display the tutor's response in the interface. The request should include the session ID, user ID, and the query.

Submitting with the Enter Key

For a better user experience, allow the user to submit their message by pressing the Enter key.

Sample API Response Bodies

To help you better understand how the backend communicates with the frontend, let's look at some sample response bodies you might receive from the /api/send_message endpoint.

When a student's question is successfully processed, the backend returns a JSON object containing the session ID and the tutor's response message:

If something goes wrong — such as a missing or invalid session ID — the backend will return an error response:

In your frontend, you can check for the presence of an error and show a helpful message to the user, ensuring a smooth and user-friendly experience.

Summary and Next Steps

In this lesson, you learned how to connect the tutor interface to a backend API using ASP.NET Core and the Fetch API. We covered the setup of API endpoints, the integration of the frontend with the backend, and the implementation of tutoring functionality. This connection is a crucial step in creating a dynamic and interactive educational application.

As you move on to the practice exercises, focus on reinforcing these concepts and experimenting with the code. This hands-on practice will deepen your understanding and prepare you for the next unit, where we will continue to enhance the personal tutor's capabilities using ASP.NET Core and Razor Pages. Keep up the great work, and let's continue building this exciting educational tool together!

Sign up
Join the 1M+ learners on CodeSignal
Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal