How to Consume the REST API from JavaScript

Contents

How to Consume a REST API from JavaScript

Consuming RESTful APIs is a fundamental skill for modern web developers. JavaScript environments—both browser and Node.js—offer versatile methods to interact with HTTP endpoints. This comprehensive article covers:

  • Overview of REST principles
  • HTTP methods and status codes
  • Using the Fetch API
  • Error handling and response parsing
  • Advanced techniques: authentication, CORS, streaming
  • Third-party libraries: Axios
  • Best practices and performance tips

Overview of REST

REST (Representational State Transfer) is an architectural style for designing networked applications. Key constraints include:

  • Statelessness: Each request contains all necessary information.
  • Uniform interface: Standard methods (GET, POST, PUT, DELETE).
  • Resource-based: Resources are identified by URIs.

Learn more on RESTful API Guide.

HTTP Methods and Status Codes

Method Purpose Common Status Codes
GET Retrieve a resource 200, 404, 304
POST Create a new resource 201, 400, 401
PUT Update an existing resource 200, 204, 400
DELETE Remove a resource 200, 204, 404

Using the Fetch API

The Fetch API is built into modern browsers and provides a promise-based interface to make HTTP requests.

Basic GET Request

fetch(https://api.example.com/items)
  .then(response =gt {
    if (!response.ok) {
      throw new Error(Network response was not ok:    response.status)
    }
    return response.json()
  })
  .then(data =gt {
    console.log(Items:, data)
  })
  .catch(error =gt {
    console.error(Fetch error:, error)
  })
  

POST with JSON Body

fetch(https://api.example.com/items, {
  method: POST,
  headers: {
    Content-Type: application/json
  },
  body: JSON.stringify({ name: New Item, price: 19.99 })
})
  .then(res =gt res.json())
  .then(item =gt console.log(Created:, item))
  .catch(err =gt console.error(err))
  

Handling Responses and Errors

  • Check response.ok or status codes before parsing.
  • Use response.json(), response.text(), or response.blob() as needed. Documented on MDN Web Docs.
  • Wrap parsing in try/catch when using async/await.

Async/Await Syntax

async function fetchItems() {
  try {
    const res = await fetch(https://api.example.com/items)
    if (!res.ok) throw new Error(Error: {res.status})
    const data = await res.json()
    return data
  } catch (error) {
    console.error(Failed to fetch items:, error)
    throw error
  }
}
  

Advanced Techniques

Authentication

Many APIs require tokens (e.g., JWT). Include them in headers:

fetch(https://api.example.com/secure-data, {
  headers: {
    Authorization: Bearer    localStorage.getItem(jwtToken)
  }
})
  

CORS (Cross-Origin Resource Sharing)

Browsers enforce CORS the server must send appropriate headers. For further details, see MDN CORS Guide.

Streaming and Large Payloads

You can process streams via response.body with ReadableStream. Useful for large data sets or file downloads.

Using Axios

Axios is a popular third-party HTTP client with a concise API and automatic JSON transforms.

Installation

// npm
npm install axios

// Yarn
yarn add axios
  

Basic Usage

import axios from axios

axios.get(https://api.example.com/items)
  .then(response =gt {
    console.log(response.data)
  })
  .catch(error =gt {
    console.error(error)
  })
  

Configuring Defaults

const api = axios.create({
  baseURL: https://api.example.com/,
  headers: { Content-Type: application/json }
})

api.post(/items, { name: Item, price: 9.99 })
  .then(res =gt console.log(res.data))
  

Best Practices

  • Debounce or throttle API calls in search inputs.
  • Use caching (e.g., Service Workers or HTTP caching headers).
  • Validate and sanitize inputs before sending.
  • Retry logic for transient network failures.
  • Timeouts to avoid hanging requests.

Conclusion

Mastering REST API consumption in JavaScript involves understanding HTTP fundamentals, choosing the right tool (Fetch API or Axios), and implementing robust error handling and authentication. By following the techniques and best practices outlined here, you’ll build resilient, maintainable clients that integrate seamlessly with backend services.



Acepto donaciones de BAT's mediante el navegador Brave 🙂



Leave a Reply

Your email address will not be published. Required fields are marked *