...

/

Practical Examples: Designing REST Endpoints

Practical Examples: Designing REST Endpoints

Learn how to start designing future APIs with REST endpoints and CRUD actions using Deno.

Create an HTTP server with the standard library

Deno offers an http module for HTTP client and server implementations among its standard libraries. Creating an HTTP server is very easy with this module and is possible with just a few lines of code.

The code widget below shows an HTTP server example using Deno’s standard library. The script listens to port 5400 and returns the string I am a DENO server 🦕 as a response when it receives a request.

import { serve } from "https://deno.land/std@0.125.0/http/server.ts";
import {
  Status
} from "https://deno.land/std@0.125.0/http/http_status.ts";

const server_port = 5400;

function req_handler(req: Request): Response {
  console.log("\nReceived a request...");
  const body = JSON.stringify({ message: "I am a DENO server 🦕" });
  return new Response(body, {
    status: Status.OK, // 200
    headers: {
      "content-type": "application/json; charset=utf-8",
    },
  });
}

// Port is optional. Default port is 8000
serve(req_handler, { port: server_port})

console.log("Listening on PORT: ", server_port);
Http server with Deno core library

The utility script https://deno.land/std/http/http_status.ts exposes a Status enum that conveniently provides all the HTTP statuses for our project. These enum values are descriptive and much easier to read than the numeric code version:

Press + to interact
export enum Status {
OK = 200,
/** RFC 7231, 6.3.2 */
Created = 201,
/** RFC 7231, 6.3.3 */
Accepted = 202,
/** RFC 7231, 6.3.4 */
NonAuthoritativeInfo = 203,
/** RFC 7231, 6.3.5 */
NoContent = 204,
/** RFC 7231, 6.5.1 */
BadRequest = 400,
/** RFC 7231, 6.6.1 */
InternalServerError = 500,
/** RFC 7231, 6.6.2 */
NotImplemented = 501,
/** RFC 7231, 6.6.3 */
BadGateway = 502
// ...

Deno’s core team put a lot of effort into ...