$lang['tuto'] = "টিউটোরিয়াল"; ?>$lang['tuto'] = "টিউটোরিয়াল"; ?> Vite+React এ ID দ্বারা API ডেটা

Vite+React এ ID দ্বারা API ডেটা পুনরুদ্ধার করতে স্প্রিং বুট ব্যাকএন্ড ব্যবহার করার সময় Axios ত্রুটিগুলি পরিচালনা করা

Temp mail SuperHeros
Vite+React এ ID দ্বারা API ডেটা পুনরুদ্ধার করতে স্প্রিং বুট ব্যাকএন্ড ব্যবহার করার সময় Axios ত্রুটিগুলি পরিচালনা করা
Vite+React এ ID দ্বারা API ডেটা পুনরুদ্ধার করতে স্প্রিং বুট ব্যাকএন্ড ব্যবহার করার সময় Axios ত্রুটিগুলি পরিচালনা করা

স্প্রিং বুটের মাধ্যমে Vite+React-এ ID-ভিত্তিক API ফেচ ত্রুটির সমাধান করা

আধুনিক ওয়েব অ্যাপ্লিকেশন তৈরি করার সময়, একটি ব্যাকএন্ড API থেকে ডেটা আনা একটি গুরুত্বপূর্ণ কাজ। একটি Vite+React ফ্রন্টএন্ডে, স্প্রিং বুট ব্যাকএন্ডের সাথে একীভূত করা বেশিরভাগ ক্ষেত্রে বিরামহীন। যাইহোক, ID দ্বারা ডেটা আনার সময় আপনি নির্দিষ্ট সমস্যার সম্মুখীন হতে পারেন, বিশেষ করে যখন Axios ব্যবহার করেন।

একটি সাধারণ সমস্যা দেখা দেয় যখন ব্রাউজারে URL-এর মাধ্যমে সরাসরি কাজ করে এমন অনুরোধগুলি যখন ফ্রন্টএন্ড থেকে আহ্বান করা হয় তখন ব্যর্থ হয়। স্প্রিং বুট ব্যাকএন্ড থেকে আইডি দ্বারা পণ্য ডেটা আনার সময় এরকম একটি ত্রুটি ঘটে। এই পরিস্থিতি ত্রুটির কারণ হতে পারে, প্রায়ই অমিল ডেটা প্রকারের সাথে সম্পর্কিত৷

এই নিবন্ধে, আমরা Axios ব্যবহার করে আইডির মাধ্যমে পণ্য আনার সময় একটি সাধারণ ত্রুটির উপর ফোকাস করব। ত্রুটিটি সাধারণত ফ্রন্টএন্ডে একটি "400 খারাপ অনুরোধ" হিসাবে দেখায় এবং ব্যাকএন্ডে একটি ব্যর্থ ডেটা টাইপ রূপান্তরকে নির্দেশ করে৷ আমরা এই সমস্যার কারণ এবং এর সমাধান উভয়ই অন্বেষণ করব।

এই সমস্যাটি সমাধান করার মাধ্যমে, আপনি ফ্রন্টএন্ড এবং ব্যাকএন্ডের মধ্যে টাইপ রূপান্তরগুলি পরিচালনা করার একটি গভীর উপলব্ধি অর্জন করবেন। স্প্রিং বুট ব্যাকএন্ডের সাথে কাজ করার সময় এটি Vite+React অ্যাপ্লিকেশনে আপনার API ইন্টিগ্রেশন উন্নত করবে।

আদেশ ব্যবহারের উদাহরণ
useParams() থেকে এই হুক প্রতিক্রিয়া-রাউটার-ডোম রুট প্যারামিটার বের করে, যা আমাদের ইউআরএল থেকে ডায়নামিকভাবে পণ্য আইডি পুনরুদ্ধার করতে দেয়। এটি নিশ্চিত করে যে উপাদানটি তার আইডি দ্বারা সঠিক পণ্যটি নিয়ে আসে।
parseInt(id, 10) ইউআরএল প্যারামিটার (আইডি) একটি স্ট্রিং থেকে একটি পূর্ণসংখ্যাতে রূপান্তর করতে ব্যবহৃত হয়। ব্যাকএন্ডে "NaN" ত্রুটি এড়ানোর জন্য এটি অত্যন্ত গুরুত্বপূর্ণ, যা পণ্য আইডির জন্য একটি পূর্ণসংখ্যা ইনপুট আশা করে।
axios.get() অক্ষ API এন্ডপয়েন্টে HTTP GET অনুরোধ পাঠাতে ব্যবহৃত পদ্ধতি। এই ক্ষেত্রে, এটি স্প্রিং বুট ব্যাকএন্ড থেকে আইডি দ্বারা পণ্য ডেটা পুনরুদ্ধার করে।
mockResolvedValue() জেস্ট পরীক্ষায়, mockResolvedValue() একটি Axios প্রতিক্রিয়া অনুকরণ করে। এটি আমাদের API কলকে উপহাস করতে এবং প্রকৃত HTTP অনুরোধ না করেই উপাদানটির আচরণ পরীক্ষা করার অনুমতি দেয়।
waitFor() এই টেস্টিং-লাইব্রেরি ফাংশনটি পরীক্ষার দাবি নিয়ে এগিয়ে যাওয়ার আগে অসিঙ্ক্রোনাস উপাদানের (যেমন API ডেটা) DOM-এ রেন্ডার করার জন্য অপেক্ষা করতে ব্যবহৃত হয়। এটি নিশ্চিত করে যে পণ্য ডেটা আনার পরেই পরীক্ষাটি চলতে থাকবে।
MockMvc.perform() স্প্রিং বুট ইউনিট পরীক্ষায়, MockMvc.perform() নির্দিষ্ট এন্ডপয়েন্টে একটি মক HTTP অনুরোধ পাঠায়। এটি আমাদের পরীক্ষার সময় ব্যাকএন্ডে অনুরোধ অনুকরণ করতে দেয়।
@WebMvcTest একটি স্প্রিং বুট টীকা যা ওয়েব স্তরের উপর দৃষ্টি নিবদ্ধ করে একটি পরীক্ষার পরিবেশ সেট আপ করে। সম্পূর্ণ অ্যাপ্লিকেশন প্রসঙ্গ লোড করার প্রয়োজন ছাড়াই নিয়ামক পরীক্ষা করার জন্য এটি কার্যকর।
@Autowired এই স্প্রিং বুট টীকাটি কন্ট্রোলার এবং পরীক্ষাগুলিতে পরিষেবা এবং সংগ্রহস্থলের মতো নির্ভরতাগুলিকে ইনজেক্ট করে। এটি নিশ্চিত করে যে প্রয়োজনীয় উপাদানগুলি ম্যানুয়াল ইনস্ট্যান্টেশন ছাড়াই ব্যবহারের জন্য উপলব্ধ।
@PathVariable এই স্প্রিং বুট টীকাটি ইউআরএল সেগমেন্টকে (প্রোডাক্ট আইডি) একটি মেথড প্যারামিটারে আবদ্ধ করে। এটি REST API এন্ডপয়েন্টে গতিশীল পাথ পরিচালনা করতে সাহায্য করে, প্রদত্ত আইডির উপর ভিত্তি করে সঠিক পণ্যটি পুনরুদ্ধার করা নিশ্চিত করে।

Axios ফেচ এবং স্প্রিং বুট ইন্টিগ্রেশন বোঝা

আমি প্রদত্ত ফ্রন্টএন্ড কোড ব্যবহার করে প্রতিক্রিয়া এবং অ্যাক্সিওস একটি থেকে পণ্য ডেটা আনার জন্য বসন্ত বুট ব্যাকএন্ড গুরুত্বপূর্ণ পয়েন্ট হল আইডি দ্বারা ডেটা আনা, যার সাথে গতিশীল রুট হ্যান্ডলিং জড়িত প্যারাম ব্যবহার করুন প্রতিক্রিয়ায় দ প্যারাম ব্যবহার করুন হুক ইউআরএল থেকে প্রোডাক্ট আইডি ক্যাপচার করে, যা তারপরে আনয়ন অপারেশন ট্রিগার করতে কম্পোনেন্টে পাস করা হয়। এই ID ব্যবহার করে একটি পূর্ণসংখ্যা রূপান্তর করা আবশ্যক parseInt ফ্রন্টএন্ড এবং ব্যাকএন্ডের মধ্যে অমিল এড়াতে, সঠিক ডেটা টাইপ স্প্রিং বুট ব্যাকএন্ডে পাঠানো হয়েছে তা নিশ্চিত করে।

Axios এন্ডপয়েন্ট ব্যবহার করে ব্যাকএন্ড API এ GET অনুরোধ সম্পাদন করে: http://localhost:8080/api/products/{id}. ব্যাকএন্ডটি প্রোডাক্ট আইডির জন্য একটি পূর্ণসংখ্যা মান আশা করার জন্য গঠন করা হয়েছে। আইডিটি সঠিকভাবে রূপান্তরিত না হলে, ব্যাকএন্ড একটি টাইপ রূপান্তর ত্রুটি ছুড়ে দেয়, যার ফলে "400 খারাপ অনুরোধ" সমস্যা দেখা দেয়। ব্যাকএন্ডের ত্রুটি লগ স্পষ্টভাবে বলে যে এটি স্ট্রিং মানকে পূর্ণসংখ্যাতে রূপান্তর করতে ব্যর্থ হয়েছে, তাই অনুরোধ করার আগে ফ্রন্টএন্ডে আইডি রূপান্তর করা অপরিহার্য।

স্প্রিং বুট ব্যাকএন্ডে, পণ্য নিয়ন্ত্রক ক্লাসে একটি এন্ডপয়েন্ট ম্যাপ করা আছে /পণ্য/{id}. এই দ্বারা পরিচালিত হয় @পাথভেরিয়েবল টীকা, যা পাথ প্যারামিটারকে মেথড আর্গুমেন্টে আবদ্ধ করে। এটি নিশ্চিত করে যে ইউআরএলে পাস করা পণ্য আইডি নিয়ামক দ্বারা সঠিকভাবে গ্রহণ করা হয়েছে। নিয়ামক, পরিবর্তে, ডাটাবেস থেকে পণ্যের বিবরণ পুনরুদ্ধার করতে পরিষেবা স্তরটিকে কল করে পণ্য পরিষেবা ক্লাস এর সঠিক হ্যান্ডলিং পাথভেরিয়েবল এবং পরিষেবা যুক্তি টাইপ অমিল ত্রুটি প্রতিরোধে অত্যন্ত গুরুত্বপূর্ণ.

পরীক্ষার জন্য, ফ্রন্টএন্ড এবং ব্যাকএন্ড উভয়ই ইউনিট টেস্টিং ব্যবহার করে যাচাই করে যে সমাধানটি বিভিন্ন পরিবেশে কাজ করে। সামনের প্রান্তে, ঠাট্টা Axios অনুরোধগুলিকে উপহাস করতে ব্যবহৃত হয়, নিশ্চিত করে যে উপাদানটি সঠিকভাবে আনা পণ্য ডেটা রেন্ডার করে। একইভাবে, ব্যাকএন্ড নিয়োগ করে MockMvc এপিআই এন্ডপয়েন্টের আচরণ পরীক্ষা করতে, বৈধ আইডি পাস করার সময় সঠিক পণ্য ডেটা ফেরত দেওয়া হয়েছে কিনা তা পরীক্ষা করে। পরীক্ষাগুলিকে অন্তর্ভুক্ত করে, বিকাশকারীরা নিশ্চিত করতে পারে যে কোডটি প্রত্যাশিত হিসাবে কাজ করে, উত্পাদনের সময় বাগ হওয়ার সম্ভাবনা হ্রাস করে।

স্প্রিং বুট ব্যাকএন্ডের সাথে Vite+প্রতিক্রিয়ায় Axios ত্রুটি পরিচালনা করা

এই স্ক্রিপ্টটি স্প্রিং বুট ব্যাকএন্ড থেকে আইডি দ্বারা পণ্য ডেটা আনতে Axios এর সাথে প্রতিক্রিয়া ব্যবহার করে। এখানে সমস্যাটি আনার প্রক্রিয়া চলাকালীন ত্রুটি এড়াতে একটি রুট প্যারামিটারকে সঠিক টাইপে রূপান্তর করা জড়িত।

import React, { useEffect, useState } from "react";
import { useParams } from "react-router-dom";
import axios from "../axios";
const Product = () => {
  const { id } = useParams();
  const [product, setProduct] = useState(null);
  useEffect(() => {
    const fetchProduct = async () => {
      try {
        // Parse id to an integer to avoid "NaN" errors
        const productId = parseInt(id, 10);
        const response = await axios.get(`http://localhost:8080/api/products/${productId}`);
        setProduct(response.data);
      } catch (error) {
        console.error("Error fetching product:", error);
      }
    };
    fetchProduct();
  }, [id]);
  if (!product) {
    return <h2 className="text-center">Loading...</h2>;
  }
  return (
    <div>
      <h1>{product.name}</h1>
      <p>{product.description}</p>
    </div>
  );
};
export default Product;

আইডি দ্বারা পণ্য আনার জন্য স্প্রিং বুট ব্যাকএন্ড হ্যান্ডলিং

এই স্প্রিং বুট ব্যাকএন্ড কোড ডাটাবেস থেকে তার আইডি দ্বারা একটি পণ্য নিয়ে আসে। এটি পূর্ণসংখ্যা টাইপ রূপান্তর পরিচালনা করে, নিশ্চিত করে যে ডেটা পাস করা হয়েছে এবং সঠিকভাবে পুনরুদ্ধার করা হয়েছে।

import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api")
public class ProductController {
  @Autowired
  private ProductService productService;
  @GetMapping("/products/{id}")
  public Product getProduct(@PathVariable int id) {
    return productService.getProductById(id);
  }
}

পণ্য আনার কার্যকারিতার জন্য ইউনিট পরীক্ষা যোগ করা হচ্ছে

প্রতিক্রিয়ায় Axios আনার অনুরোধের সঠিক কার্যকারিতা যাচাই করতে Jest ব্যবহার করে ইউনিট পরীক্ষা তৈরি করা হয়।

import { render, screen, waitFor } from '@testing-library/react';
import axios from 'axios';
import Product from './Product';
jest.mock('axios');
test('fetches and displays product', async () => {
  axios.get.mockResolvedValue({ data: { name: 'Product1', description: 'A sample product' } });
  render(<Product />);
  await waitFor(() => expect(screen.getByText('Product1')).toBeInTheDocument());
});

MockMvc দিয়ে স্প্রিং বুট ব্যাকএন্ড পরীক্ষা করা হচ্ছে

সঠিক অনুরোধ এবং প্রতিক্রিয়া হ্যান্ডলিং নিশ্চিত করতে MockMvc ফ্রেমওয়ার্ক ব্যবহার করে কীভাবে স্প্রিং বুট ব্যাকএন্ড পরীক্ষা করা যায় এই উদাহরণটি দেখায়।

@RunWith(SpringRunner.class)
@WebMvcTest(ProductController.class)
public class ProductControllerTest {
  @Autowired
  private MockMvc mockMvc;
  @Test
  public void testGetProductById() throws Exception {
    mockMvc.perform(get("/api/products/1"))
      .andExpect(status().isOk())
      .andExpect(jsonPath("$.name").value("Product1"));
  }
}

Axios এবং স্প্রিং বুটে আইডি-ভিত্তিক আনয়ন ত্রুটি অতিক্রম করা

একটি ব্যাকএন্ড API থেকে ডেটা আনার আরেকটি গুরুত্বপূর্ণ দিক হ্যান্ডলিং জড়িত ত্রুটি প্রতিক্রিয়া gracefully Vite+React ফ্রন্টএন্ডে আইডি-ভিত্তিক প্রশ্নগুলির সাথে কাজ করার সময়, সার্ভারের একটি ত্রুটি ফেরত দেওয়ার সম্ভাবনা 400 খারাপ অনুরোধ অথবা একটি ধরনের অমিল সাধারণ। একটি মসৃণ ব্যবহারকারীর অভিজ্ঞতা নিশ্চিত করতে ফ্রন্টএন্ডে এই ত্রুটিগুলি কীভাবে অনুমান করা যায় এবং পরিচালনা করা যায় তা বোঝা অপরিহার্য। আমাদের উদাহরণে, পার্সিং আইডি প্যারামিটার জাভাস্ক্রিপ্ট সঠিকভাবে ব্যবহার করা একটি মূল পদক্ষেপ, তবে বিশ্বব্যাপী ব্যতিক্রমগুলি পরিচালনা করার জন্য অতিরিক্ত বিবেচনাও রয়েছে।

আরো জটিল অ্যাপ্লিকেশন, সেট আপ ত্রুটি সীমানা ইন রিঅ্যাক্ট পুরো অ্যাপ্লিকেশনটিকে ক্র্যাশ না করে এই ধরনের ত্রুটি ধরতে সাহায্য করতে পারে। এটি প্রতিক্রিয়া এর ব্যবহার জড়িত componentDidCatch ফাংশন-ভিত্তিক উপাদানগুলিতে জীবনচক্র পদ্ধতি বা ত্রুটি-সীমার হুক। ব্যবহারকারীর কাছে তথ্যপূর্ণ বার্তাগুলি সঠিকভাবে প্রদর্শন করে ব্যাকএন্ড ত্রুটিগুলি পরিচালনা করা যখন API কলগুলি ব্যর্থ হয় তখন হতাশা এবং বিভ্রান্তি প্রতিরোধ করতে পারে। এই পদ্ধতিটি অবৈধ আইডি বা অনুপলব্ধ পণ্যগুলির মতো সমস্যাগুলি ধরার জন্য বিশেষভাবে কার্যকর।

উপরন্তু, ফ্রন্টএন্ড এবং ব্যাকএন্ড উভয় ক্ষেত্রেই লগিং প্রয়োগ করা ডেভেলপারদের পুনরাবৃত্ত সমস্যা সনাক্ত করতে এবং কর্মক্ষমতা অপ্টিমাইজ করতে সাহায্য করতে পারে। উদাহরণস্বরূপ, API আনার অনুরোধের সময় কত ঘন ঘন নির্দিষ্ট ত্রুটি ঘটে তা ট্র্যাক করা অন্তর্নিহিত বাগ বা অদক্ষতা প্রকাশ করতে পারে। মত একটি টুল দিয়ে এই ঘটনা নিরীক্ষণ সেন্ট্রি অথবা কাস্টম লগিং পরিষেবার মাধ্যমে নিশ্চিত করে যে আপনি তাদের দ্রুত সমাধান করতে পারেন। এই অনুশীলনটি সময়ের সাথে সাথে আপনার আবেদনের নির্ভরযোগ্যতা এবং রক্ষণাবেক্ষণের উল্লেখযোগ্যভাবে উন্নতি করে।

Axios এবং Spring Boot-এ ID দ্বারা ডেটা আনার বিষয়ে প্রায়শই জিজ্ঞাসিত প্রশ্ন

  1. কেন আমার Axios অনুরোধ আইডি দ্বারা আনার সময় একটি 400 ত্রুটি ফেরত দেয়?
  2. এই ঘটবে যখন URL parameter সঠিকভাবে প্রত্যাশিত ডেটা টাইপে রূপান্তরিত হয় না, যেমন স্ট্রিং থেকে পূর্ণসংখ্যা পর্যন্ত। ব্যবহার করুন parseInt() এটা ঠিক করতে।
  3. Axios অনুরোধে আমি কীভাবে ত্রুটিগুলি পরিচালনা করব?
  4. আপনি ব্যবহার করে ত্রুটি পরিচালনা করতে পারেন try-catch অ্যাসিঙ্ক্রোনাস ফাংশনে ব্লক। এছাড়াও, ব্যবহার করুন axios.interceptors বিশ্বব্যাপী ত্রুটি পরিচালনার জন্য।
  5. স্প্রিং বুটে @PathVariable এর ভূমিকা কি?
  6. @PathVariable টীকা ইউআরএল থেকে মানটিকে ব্যাকএন্ডে একটি মেথড প্যারামিটারে আবদ্ধ করে, ইউআরএলের উপর ভিত্তি করে গতিশীলভাবে ডেটা পুনরুদ্ধার করতে সহায়তা করে।
  7. আমি কিভাবে প্রতিক্রিয়া এ Axios API কল পরীক্ষা করতে পারি?
  8. যেমন টেস্টিং লাইব্রেরি ব্যবহার করুন Jest এবং axios-mock-adapter API প্রতিক্রিয়া অনুকরণ করতে এবং Axios অনুরোধের আচরণ পরীক্ষা করতে।
  9. স্প্রিং বুটে ত্রুটিগুলি লগ করার একটি ভাল উপায় কি?
  10. আপনি ব্যবহার করতে পারেন SLF4J বা Logback স্প্রিং বুটে ব্যাকএন্ড লগিংয়ের জন্য। এটি আপনাকে API অনুরোধগুলির সাথে পুনরাবৃত্ত সমস্যাগুলি ট্র্যাক করতে এবং সমাধান করতে দেয়৷

Vite+React-এ আইডি ফেচ সংক্রান্ত সমস্যার সমাধান করা

আইডি দ্বারা একটি ব্যাকএন্ড API থেকে ডেটা আনয়ন অনন্য চ্যালেঞ্জ উপস্থাপন করতে পারে, বিশেষ করে যখন ব্যাকএন্ড কঠোর ডেটা প্রকারের প্রত্যাশা করে। আমাদের উদাহরণে, সঠিকভাবে রূপান্তর আইডি Axios এর সাথে একটি অনুরোধ পাঠানোর আগে ফ্রন্টএন্ডে "400 খারাপ অনুরোধ" ত্রুটির মতো সমস্যাগুলি প্রতিরোধ করতে সাহায্য করেছিল৷ মসৃণ যোগাযোগের জন্য ফ্রন্টএন্ড এবং ব্যাকএন্ডের মধ্যে ডেটা টাইপ সামঞ্জস্য নিশ্চিত করা অত্যন্ত গুরুত্বপূর্ণ।

উপরন্তু, ফ্রন্টএন্ড এবং ব্যাকএন্ড উভয় ক্ষেত্রেই সঠিক ত্রুটি পরিচালনার কৌশল প্রয়োগ করা অ্যাপ্লিকেশনটির স্থিতিশীলতাকে আরও বাড়িয়ে তুলবে। লগিং ফ্রেমওয়ার্ক এবং ত্রুটির সীমানাগুলির মতো সরঞ্জামগুলি ব্যবহার করা নিশ্চিত করবে যে পুনরাবৃত্ত সমস্যাগুলি চিহ্নিত এবং সংশোধন করা যেতে পারে, ব্যবহারকারীর অভিজ্ঞতা এবং সিস্টেমের নির্ভরযোগ্যতা উন্নত করে।

সূত্র এবং তথ্যসূত্র
  1. React এবং Vite-এ Axios এরর হ্যান্ডলিং সংক্রান্ত তথ্যের জন্য, অফিসিয়াল Axios ডকুমেন্টেশন এর ব্যবহার সম্পর্কে বিস্তারিত অন্তর্দৃষ্টি প্রদান করেছে axios.get এবং ত্রুটি ব্যবস্থাপনা। এখানে ডকুমেন্টেশন দেখুন: Axios ডকুমেন্টেশন .
  2. জাভা স্প্রিং বুট কন্ট্রোলার সেটআপটি অফিসিয়াল স্প্রিং বুট গাইড থেকে রেফারেন্স করা হয়েছিল, কীভাবে বাস্তবায়ন করতে হয় তার সর্বোত্তম অনুশীলনগুলি অফার করে @পাথভেরিয়েবল এবং REST API. এখানে আরও পড়ুন: বসন্ত বুট গাইড .
  3. রাউটার এর প্রতিক্রিয়া প্যারাম ব্যবহার করুন হুক ডায়নামিক ইউআরএল প্যারামিটারের প্রসঙ্গে ব্যাখ্যা করা হয়েছে। আরো বিস্তারিত জানার জন্য, অফিসিয়াল রিঅ্যাক্ট রাউটার ডকুমেন্টেশন দেখুন: রাউটার ডকুমেন্টেশন প্রতিক্রিয়া .
  4. পরীক্ষার উদ্দেশ্যে জেস্ট টেস্টিং এবং অ্যাক্সিওসকে উপহাস করার তথ্য জেস্ট এবং অ্যাক্সিওস টেস্টিং ডকুমেন্টেশন থেকে নেওয়া হয়েছিল। এখানে সম্পদ দেখুন: জেস্ট মক ফাংশন এবং Axios মকিং গাইড .