如何在 gleam 中格式化 HTTP 标头的日期?

问题描述 投票:0回答:2

我想设置一个

Date
标题。它应该是这样的格式:

Date: <day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT
Date: Wed, 21 Oct 2015 07:28:00 GMT

这是我到目前为止所拥有的:

import gleam/http/elli
import gleam/http/response.{type Response}
import gleam/http/request.{type Request}
import gleam/bytes_builder.{type BytesBuilder}
import birl

// Define a HTTP service
//
pub fn my_service(_request: Request(t)) -> Response(BytesBuilder) {
  let body = bytes_builder.from_string("Hello, world!")

  response.new(200)
  |> response.prepend_header("content-type", "text/plain")
  |> response.prepend_header("server", "gleam")
  |> response.prepend_header("date", birl.to_iso8601(birl.now()))
  |> response.set_body(body)
}

pub fn main() {
  elli.become(my_service, on_port: 8080)
}
date http-headers gleam elli birl
2个回答
0
投票

您可以使用 Birl 库的 format_date 函数:

import gleam/http/elli
import gleam/http/response.{type Response}
import gleam/http/request.{type Request}
import gleam/bytes_builder.{type BytesBuilder}
import birl
import time.{Iso8601}

// Define a HTTP service
//
pub fn my_service(_request: Request(t)) -> Response(BytesBuilder) {
  let body = bytes_builder.from_string("Hello, world!")

  response.new(200)
  |> response.prepend_header("content-type", "text/plain")
  |> response.prepend_header("server", "gleam")
  |> response.prepend_header("date", format_date(birl.now()))
  |> response.set_body(body)
}

fn format_date(timestamp: Iso8601) -> String {
  let date = birl.format_date(timestamp, "EEE, dd MMM yyyy HH:mm:ss 'GMT'")
  date
}

pub fn main() {
  elli.become(my_service, on_port: 8080)
}

0
投票

看起来

birl
to_http
功能。

birl.to_http(birl.now())
© www.soinside.com 2019 - 2024. All rights reserved.