Search packages, repositories and app categories

Package detailsv2.0.0-rc.6

relic_headers

HTTP header names and stores shared by Relic adapters and other packages.

30-day downloads
19K
Likes
0
Pub points
160

Install package

dart pub add relic_headers

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

The relic_headers package provides a standardized collection of HTTP header names and storage utilities used across Relic adapters and related packages. It ensures consistency in header handling, reducing errors and improving interoperability between HTTP clients and servers. By centralizing commonly used headers, it simplifies configuration and maintenance in network communication workflows. Designed for use within the ServerPod ecosystem, it supports clean, reusable code for HTTP interactions.

Use cases

  • Standardizing HTTP header usage across services
  • Simplifying header management in HTTP clients
  • Enabling consistent API communication
  • Supporting Relic adapter integrations
  • Facilitating backend-to-backend request coordination

Key features

  • Centralized HTTP header definitions
  • Shared storage for header values
  • Consistent naming across adapters
  • Lightweight and dependency-focused
  • Designed for ServerPod ecosystem

Suitable for

  • Developers using ServerPod or Relic adapters
  • Teams needing uniform HTTP header handling
  • Projects requiring reliable HTTP client configurations
  • Backend service communication
  • API integration with consistent headers

Considerations

  • Primarily intended for use within ServerPod projects
  • Limited standalone utility outside its ecosystem
  • May require additional setup for non-Relic workflows
  • Not suitable for general-purpose HTTP libraries without context

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

Relic web server banner

build codecov Stars on Github License: BSD-3-Clause

Relic web server

Relic is a modern, high-performance web server framework inspired by Shelf and built by the Serverpod team to meet the demanding requirements of modern web applications. Relic provides a robust, type-safe, and efficient foundation for building scalable web services.

👉 Full documentation available here 📚

Why Relic?

While Shelf has been a solid foundation for Dart web applications, several areas for improvement were identified. Rather than work around these limitations, Relic was created as a next-generation framework that maintains Shelf's familiar structure while delivering significant enhancements. These are some of the improvements:

  • Strongly typed APIs with validated HTTP headers.
  • Simplified interface for setting up routing and middleware.
  • Unified encoding model for HTTP bodies.
  • Built-in trie-based router, which improves performance.
  • Static file handling with support for cache busting and etags.
  • Built-in support for WebSockets.
  • Improvements in hot reload and running with multiple isolates.

Quick start

  1. Install Dart 3.7 or newer and verify with dart --version.
  2. Add Relic: dart pub add relic
  3. Create a new console app and drop in the hello world server below.
dart create -t console-full hello_world
cd hello_world
dart pub add relic
Run your first Relic server

Place this file in bin/hello_world.dart (runnable example is also under example/example.dart):

import 'package:relic/io_adapter.dart';
import 'package:relic/relic.dart';

/// A simple 'Hello World' server demonstrating basic Relic usage.
Future<void> main() async {
  // Setup the app.
  final app =
      RelicApp()
        // Route with parameters (:name & :age).
        ..get('/user/:name/age/:age', helloHandler)
        // Middleware on all paths below '/'.
        ..use('/', logRequests())
        // Custom fallback - optional (default is 404 Not Found).
        ..fallback = respondWith(
          (_) => Response.notFound(
            body: Body.fromString("Sorry, that doesn't compute.\n"),
          ),
        );

  // Start the server (defaults to using port 8080).
  await app.serve();
}

const _ageParam = PathParam<int>(#age, int.parse);
/// Handles requests to the hello endpoint with path parameters.
Response helloHandler(final Request req) {
  final name = req.pathParameters.raw[#name];
  final age = req.pathParameters.get(_ageParam);

  return Response.ok(
    body: Body.fromString('Hello, $name! To think you are $age years old.\n'),
  );
}

Run it with dart run bin/hello_world.dart and visit http://localhost:8080/user/Nova/age/27.

Additional examples

Relic comes with an extensive set of examples. To run them, clone the Relic repository from GitHub and navigate to the example directory.

git clone https://github.com/serverpod/relic.git
cd relic/example
dart example.dart

Migrating from Shelf

Are you on Shelf? Moving over is straightforward. Relic's APIs are very similar while giving you typed requests, built-in routing, and WebSockets out of the box. Follow the step-by-step guide at docs.dartrelic.dev/getting-started/shelf-migration to upgrade your project in minutes.

Categories

Source repository

Projects using this package

No data available yet.

Rankings