Coder Social home page Coder Social logo

custom-axios-service-for-react's Introduction

HttpClientService.ts

     import axios, { AxiosHeaders } from 'axios'
   export class RequestParameters {
       controller?: string;
       action?: string;
       queryString?: string;
       headers?: AxiosHeaders;
       baseUrl?: string;
       fullEndPoint?: string
   }
   
   
   export const HttpClientService = {
       
       url(requestParameters: Partial<RequestParameters>): string {
           const mainUrl :string='https://jsonplaceholder.typicode.com';
           return `${requestParameters.baseUrl ? requestParameters.baseUrl : mainUrl}/${requestParameters.controller}${requestParameters.action ? `/${requestParameters.action}` : ""}`;
       },
   
       async get<T>(requestParameters: Partial<RequestParameters>, id?: string) {
           let url: string = '';
           if (requestParameters.fullEndPoint) {
               url = requestParameters.fullEndPoint
           }
           else {
               url = `${this.url(requestParameters)}${id ? `?id=${id}` : ''}${requestParameters.queryString ? `/${requestParameters.queryString}` : ''}`;
               return  (await axios.get<T>(url, { headers: requestParameters.headers }))
           }
       }
       //post()
       //put()
       //delete()
      
   } 

HttpUserService.ts

      import { HttpClientService } from "../httpClientService";
   
   
   interface Response<T> {
       data:Data<T>;
       status:number;
     }
     interface Data<T> {
       products:T[]
     }
   
     
   export const HttpUserService={
       async read(  setState:React.Dispatch<React.SetStateAction<any>>,callBack?:()=>void){
           await HttpClientService.get<Response<any>>({
                controller:'todos'
            }).then(response=>{
               //check in case of response (status code , status text)
               
               setState(response.data);
                
            }).catch(err=>{
               // check in case of error
               alert(err.message);
              
            })
            if(callBack!=undefined){
                callBack();
            }
        },
   }

App.tsx

   import { useEffect, useState } from "react"
   import { HttpUserService } from "./http/http-user/httpUserService"
   
   
   function App() {
   const [user,setUser]=useState<any>([]);
     useEffect(()=>{
       HttpUserService.read(setUser,()=>{
         //Let's say we have added users, we can call a method that will load users again from here
         //or assuming we use a spinner, here the spinner can be deactivated
       })
     },[])
     return (
       <>
         {user? user[0]?.id:'null'}
       </>
     )
   }
   
   export default App

custom-axios-service-for-react's People

Contributors

huseyincorakli avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.