Rumah >pembangunan bahagian belakang >Golang >'Hello World' dalam cara HTTP

'Hello World' dalam cara HTTP

DDD
DDDasal
2025-01-02 16:58:39548semak imbas

Pernyataan masalah

Laksanakan aplikasi "Hello World" dalam mana-mana bahasa pengaturcaraan yang anda suka.

Aplikasi adalah aplikasi CLI. Ia mula-mula melancarkan pelayan HTTP pada "localhost:8000." Pelayan harus bertindak balas dengan respons teks (jenis kandungan "teks/plain") dan kod respons 200 pada mana-mana laluan. Apabila perkhidmatan HTTP sedia, aplikasi menghantar permintaan GET ke pelayan HTTPnya, membaca respons ("Hello World") dan mencetak respons kepada output standard. Akhirnya, aplikasi menutup pelayan HTTP dan wujud.

Aplikasi boleh diuji dengan curl http://localhost:8000.

Pelaksanaan dalam Go

package main

import (
    "fmt"
    "io"
    "log"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello, World!")
}

func main() {
    http.HandleFunc("/", handler)
    go func() {
        err := http.ListenAndServe(":8000", nil)
        if err != nil {
            log.Fatalf("http.ListenAndServe failed: %v", err)
        }
    }()
    r, err := http.Get("http://localhost:8000/")
    if err != nil {
        log.Fatalf("http.Get failed: %v", err)
    }
    defer r.Body.Close()
    t, err := io.ReadAll(r.Body)
    if err != nil {
        log.Fatalf("io.ReadAll failed: %v", err)
    }
    fmt.Println(string(t))
}

Pelaksanaan dalam Go dengan penutupan pelayan HTTP yang anggun

package main

import (
    "fmt"
    "io"
    "log/slog"
    "net/http"
    "os"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello, World!")
}

func configureLogging() {
    programLevel := new(slog.LevelVar)

    logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: programLevel}))
    slog.SetDefault(logger)

    if os.Getenv("DEBUG") != "" {
        programLevel.Set(slog.LevelDebug)
    }
}

func main() {
    configureLogging()

    http.HandleFunc("/", handler)

    addr := "localhost:8000"
    server := &http.Server{Addr: addr}

    done := make(chan struct{})
    go func(done chan<- struct{}) {
        slog.Debug("server.ListenAndServe", "addr", addr)
        err := server.ListenAndServe()
        if err != nil {
            slog.Debug("server.ListenAndServe", "error", err)
        }
        close(done)
    }(done)

    r, err := http.Get("http://" + addr)
    if err != nil {
        slog.Error("http.Get failed", "error", err)
        return
    }
    defer r.Body.Close()
    t, err := io.ReadAll(r.Body)
    if err != nil {
        slog.Error("io.ReadAll failed", "error", err)
        return
    }
    fmt.Println(string(t))
    err = server.Shutdown(nil)
    if err != nil {
        slog.Error("server.Shutdown failed", "error", err)
        return
    }
    <-done
}

Pelaksanaan dalam Typescript

Sanggul

import process from "node:process";

Bun.serve({ fetch: () => new Response("Hello World!"), port: 8000 });

console.log(await (await fetch("http://localhost:8000/")).text());
process.exit();

Deno

Deno.serve(
  { port: 8000, onListen: () => {} }, 
  () => new Response("Hello World!")
);
console.log(await(await fetch("http://localhost:8000/")).text());
Deno.exit();

Cabaran untuk anda ialah bagaimana anda akan melaksanakan ini.

Atas ialah kandungan terperinci 'Hello World' dalam cara HTTP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn