我需要
我知道基本上任何语言都能实现这个功能,只是想问一下有没有相对比较好的,写起来方便一点
我自己的考虑:
其他的不太熟悉了,大佬们有什么建议吗
1
ipwx 2021-07-02 16:30:02 +08:00
python 提供 http 接口是所有语言里面最简单的了基本上。
以下挑一个: fastapi flask |
2
ysc3839 2021-07-02 16:51:13 +08:00 via Android
golang 吧,因为默认就是编译成单个可执行文件,也有自带的 http server library 。
|
3
ysc3839 2021-07-02 16:55:06 +08:00 via Android
不然的话就 C++ 或 Rust,C++ 也有一些好用 http server library 。
|
4
Jirajine 2021-07-02 17:11:53 +08:00 via Android
py 或者 deno
|
5
luooooob 2021-07-02 19:45:02 +08:00
c 写的服务直接写个 nginx module 就好了,简单的东西就不要折腾什么跨语言调用了。
|
6
Cbdy 2021-07-02 20:52:12 +08:00
当然是选 Node.js 啦
|
7
GeruzoniAnsasu 2021-07-02 20:56:16 +08:00
> 调用 c 语言写的动态库
> 希望最后的程序也能编译成单个可执行文件 > 简单的 http 库 没错就是 golang,而且基本没什么会绕远路的可能性,动态库把头文件拷过来.go 里加几行注释就能链接上(前提是不用 dlsolve ) |
8
lujjjh 2021-07-02 20:59:19 +08:00
推荐用 Go 。Go 调 C 非常方便,写 HTTP server 也非常方便,也能生成单独的可执行文件。
其次是用 C,如果 HTTP 接口没有高并发需求,写个 CGI 还是很容易的,外面套一个 nginx 或者其他 web server 。git 的 HTTP 接口就是这么玩的,可以参考: https://github.com/git/git/blob/670b81a890388c60b7032a4f5b879f2ece8c4558/http-backend.c#L739 |
9
3dwelcome 2021-07-02 21:00:08 +08:00
"不过提供 http 接口有点头疼,昨天发帖求了几个,看起来还是挺难写的"
用 apache cgi 真心简单。 三个步骤 1 写一个 hello world 控制台 C 程序,用 gcc 编译成 elf 文件。 2 改后缀为.cgi 3 放到服务器上的 cgi-bin 目录下,用当成正常的 http get 请求访问,apache 会自动把你的 C 代码输出,转换成 web 的返回格式。 |
10
3dwelcome 2021-07-02 21:14:33 +08:00
从头写 web 服务不难,http1.1 协议相对还是很容易的。
但有两点问题,一是现在网络基本都是 https,套一层 SSL 中间层是比较麻烦事的,一般全一点的安全库都不太小,还要加载服务器域名证书之类的。 还有一点就是对于服务器监控的访问,最好的协议不是 http get/post 短连接,而是 websocket 这种长连接,能实时看到服务器推送的 CPU/内存 /进程运行状态的东西。 |
11
BiteTheDust 2021-07-02 22:52:56 +08:00
c 语言其实轻量的 http 实现也很简单 加俩头文件就行
|
12
chenqh 2021-07-02 23:24:12 +08:00
要单个可执行文件,估计只能 golang 了吧
|
13
hronro 2021-07-02 23:40:24 +08:00
Rust 吧,无痛调用 C ( C 也可以无痛调用 Rust ),其他几个条件也能满足。说 Go 调用 C 非常方便的还是省省吧。
上个 Web 框架比如 Rocket 之类的,实现起来应该很简单。 |
14
agagega 2021-07-03 00:02:53 +08:00 via iPhone
我说一个别人不敢说的,Swift (逃
静态语言,语法舒适(比 Go 特性多,比 Rust 好上手),没有 GC,可以编译到单个可执行文件,性能还行,而且和 C 混编不麻烦。缺点是对 Windows 兼容比较差 |
15
0o0O0o0O0o 2021-07-03 00:06:16 +08:00 via iPhone
zig
|
16
lujjjh 2021-07-03 00:14:11 +08:00
@hronro 没必要踩一捧一,cgo 调 C 跟 Rust 的 FFI 调 C 的体验区别不大。
我理解很多人觉得 Rust 很香,但是考虑到 Rust 的学习曲线,推荐给一个零基础、想要快速实现功能的人是不理智的。对 C 比较熟悉的话,直接用 C 写或者学跟 C 很像的 Go 是最快的。 |
17
voiyy 2021-07-03 08:56:20 +08:00
nim 、vala
|
18
signalyc 2021-07-03 10:04:37 +08:00
PHP
|
19
zhuzongxing 2021-07-03 10:29:12 +08:00
看你自己主力语言啊。。。
|
20
learningman 2021-07-03 10:50:46 +08:00 via Android
go,py 不好编译成单个文件
|
21
cs8425 2021-07-03 12:49:17 +08:00
除了 go, 再提一个: C#
个人没试过, 但是调用动态库应该没啥问题 参考: stackoverflow is-there-a-linux-equivalent-of-dllimport-in-net-core stackoverflow p-invoke-to-dynamically-loaded-library-on-mono (不知为啥直接贴网址要认证才给发 |
22
Hconk 2021-07-03 18:24:53 +08:00
建议 C++吧,既然会写 c,把 C++当 C with class 用几乎没有学习成本,再用个 header only 的 http 库,实现起来也很简单,你提的这些用 Go/Rust 或者别的实现肯定没有问题,不过从工作的角度不建议你选,你们公司如果没人熟悉这些语言建议不要用,小众语言后期你想交给别人开发维护很难交出去,这种一有问题只能找你维护的小东西积累多了后面有你难受的。
|