基于debian为嵌入式设备编写小型Web服务

基于debian为嵌入式设备编写小型Web服务

我们正在开发嵌入式设备,未来将与我们的一些服务集成。该设备具有有限的功能集和针对特定用例的用户定义的模块。该设备基于arm架构,运行Debian的修改版本。对于网络和主要配置设置,我需要编写小型 Web 服务。这应该是安全且轻便的。我使用轻量级 Web 服务器(例如 lighttpd)和语言(例如 python)混合进行了测试,并设法使原型正常工作。具有功能正常的 Web 服务,并且该 Web 服务可以与在初始步骤中推送配置的客户端集成。我担心的是,即使这是轻量级的,我也不需要在对设备具有高级别访问权限的设备上部署全功能的 Web 服务器来配置它。即使我在配置后禁用此过程

除了拥有成熟的 Web 服务器之外,还有什么方法可以拥有小型的 REST API 吗?我已经测试过restbed C++ Rest api。这是一个复杂的、基于 python 的无服务器 Web 服务。但我也不想部署 python。因为这个服务只向客户端传输 10 个以下的参数,这有点过分了。有没有安全的方法可以在没有守护进程之类的服务的情况下实现这一点。

答案1

虽然这个问题有点模糊并且有待商榷,但我会把我的问题扔在那里。戈兰在标准库中有一个非常易于使用的服务器包。它看起来很像 C,几乎可以在任何平台和架构上编译为本机可执行文件,并且您可以使用很少的行来托管一个非常简单的网络服务器,如下所示。

package main

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

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}

func main() {
    http.HandleFunc("/", handler)
    log.Fatal(http.ListenAndServe(":8080", nil))
}

如果您想要安全性,您可以通过创建一些自签名证书来轻松设置 TLS,然后只需将 http.ListenAndServe 替换为err := http.ListenAndServeTLS(":10443", "cert.pem", "key.pem", nil)

它非常轻便,易于在任何地方运行。正如 Eli 在评论中巧妙指出的那样,交叉编译也非常容易完成,这意味着可以快速构建并部署到嵌入式设备。

相关内容