这是我第一次尝试用 Erlang 编写任何东西,所以这个问题可能很愚蠢。
我正在使用牛仔编写一个非常简单的 HTTP 服务器
db_name() -> "DB_test".
timestamp() ->
calendar:datetime_to_gregorian_seconds(calendar:universal_time()).
sha(Str) ->
<<X:256/big-unsigned-integer>> = crypto:hash(sha256, Str),
lists:flatten(io_lib:format("~64.16.0b", [X])).
handle_post(Req0, State) ->
Link = binary_to_list(cowboy_req:header(<<"link">>, Req0)),
dets:open_file(db_name(), []),
dets:insert(db_name(), {hashed_url(Link), Link, timestamp()}),
Req = cowboy_req:reply(200,
#{<<"content-type">> => <<"text/plain">>},
sha(Link),
Req0),
{ok, Req, State}.
这个想法是一个 POST HTTP 请求包含一个带有一些链接的“链接”标头。在收到这样的请求后,我的服务器应该将它的散列连同链接及其时间戳一起存储在 dets 表中。问题是没有创建“DB_test”文件。为什么?