为什么 Common Lisp 著名的库 Dexador 不适用于这种 HTTP POST 请求情况?这是一个错误还是我错过了什么?

Why is Common Lisp famous library Dexador not working for this HTTP POST request case? Is it a bug or did I miss something?

我正在使用 SBCL、Emacs、Slime 和 Dexador。我也在 Udemy 上观看关于 Postman 的这门课程。

在某个时候,讲师提出了一个使用基本身份验证的 POST 请求。总结如下图:

POST 请求是在地址 https://simple-tool-rental-api.glitch.me/api-clients 发出的。另外提交一条JSON格式的正文:

{
    "clientName": "Postman",
    "clientEmail": "pedro@gmail.com"
}

作为回复,服务器响应:

{
    "accessToken": "079e7bb6d3832c0d7054ae0e1146d6ed3277836fefd2e0aa9e5d7d207945e17f"
}

我尝试使用名为 Dexador 的著名库并使用文档说明来做同样的事情:

CL-USER>(dex:post "https://simple-tool-rental-api.glitch.me/api-clients"
            :content '(("clientName" . "Postman") ("clientEmail" . "pete@example.com")))

不幸的是,Slime returns 一条错误消息指示 400 错误请求:

An HTTP request to "https://simple-tool-rental-api.glitch.me/api-clients" returned 400 bad request.

{"error":"Invalid or missing client name."}

这是一个错误吗?我错过了什么吗?

一个工作示例:

(dex:request "https://simple-tool-rental-api.glitch.me/api-clients"
                      :method :post 
                      :headers '(("Content-Type" . "application/json"))
                      :content "{\"clientName\":\"Postman\",
                        \"clientEmail\": \"pete@example.com\"}" 
                      :verbose t)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
POST /api-clients HTTP/1.1
User-Agent: Dexador/0.9.15 (SBCL 1.4.5.debian); Linux; 5.0.0-31-generic
Host: simple-tool-rental-api.glitch.me
Accept: */*
Content-Type: application/json
Content-Length: 83

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
HTTP/1.1 201 Created
Date: Tue, 05 Apr 2022 12:44:55 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 82
Connection: keep-alive
x-powered-by: Express
etag: W/"52-egRRCktqEOIEh9dS2uY8rWUiyfY"

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
"{\"accessToken\":\"7e559ebee8ff889054346dbbd727c1bb9b9d55123fb5bd49686337e8829f8b78\"}"
201
#<HASH-TABLE :TEST EQUAL :COUNT 6 {1003C05373}>
#<QURI.URI.HTTP:URI-HTTPS https://simple-tool-rental-api.glitch.me/api-clients>
#<CL+SSL::SSL-STREAM for #<FD-STREAM for "socket 192.168.1.53:39148, peer: 18.205.205.44:443" {10035F4C33}>>

我使用“pete”电子邮件,因为 pedro one“已经注册”。 我使用 hand-formatted JSON 发送 Content-Typeapplication/json 的凭据,我确定是哪种格式。我想在 Postman 屏幕截图中使用“原始”content-type,但不确定 alist 是否适合它。

我认为通过更好地了解示例 API,您可以整理出另一个 content-type 用于 alist 正文内容。