Http Post 通过 prolog 请求

Http Post request via prolog

我正在尝试通过 prolog 向另一个 rest api 发出 post 请求。类似的东西(如果我在 js 中这样做):

body={

login="login",

passsword="password"

}

axios.post("http://localhost:5000",body);

我不是想 post 到序言,我是想 post 从序言到另一个 api。

我不知道如何将正文添加为 json 并将 Content-Type 设置为 application/json。

这是我到目前为止的想法:

% Bibliotecas
:- use_module(library(http/thread_httpd)).
:- use_module(library(http/http_dispatch)).
:- use_module(library(http/http_parameters)).
:- use_module(library(http/http_ssl_plugin)).
:- use_module(library(http/http_open)).
:- use_module(library(http/http_json)).

% Routes
:- http_handler('/auth', auth, []).
:- http_handler('/send_file_post', send_file_post, []).

% Cria��o de servidor HTTP no porto 'Port'
server(Port) :-
        http_server(http_dispatch, [port(Port)]).

auth(Request) :-
  http_read_json(Request, DictIn,[json_object(dict)]),
   format(user_output,"Request is: ~p~n",[Request]),
   format(user_output,"DictIn is: ~p~n",[DictIn]),
   DictOut=DictIn,
   reply_json(DictOut),

   http_client:http_post('http://localhost:5000/api/users/authenticate', DictOut,Reply, [content("application/json")]),
  http_read_data(Reply, Data, []).

添加进一步说明:

我向我的 prolog http 服务器发出了一个 post 请求,在它的正文中我有一个电子邮件和一个密码。我的最终目标是用相同的 email/password.

向另一个 api 发出第二个 post 请求

有什么建议吗?

您可以使用 http_post/4.

https://www.swi-prolog.org/pldoc/doc_for?object=http_post/4

http_post([ protocol(http),
            host(localhost),
            port(5000),
            path('/mypostpage')
          ],
          form_data([ login = myusername,
                      password = pass123
                    ]),
          Reply,
          []).

将向 http://localhost:5000/mypostpage

发送 post 请求