【问题标题】:Example of REST file upload POST request?REST 文件上传 POST 请求的示例?
【发布时间】:2014-10-24 05:37:39
【问题描述】:

我正在尝试使用 Cowboy 在 Erlang 中创建一个 RESTful 服务器,但我遇到了麻烦,因为我对 HTTP 请求一无所知。我找不到 RESTful 文件上传请求的示例,只有一个普通的。

这适用于常规 HTTP 服务器(可在 Cowboy 示例中找到)上传文件 compile.sh,其中包含 git add * ; git commit -a -m "upload" ; git push

POST /upload HTTP/1.1
Host: 169.229.85.167:8080
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryd1YD0OADcYFcuL0v
Origin: http://169.229.85.167:8080
Accept-Encoding: gzip, deflate
Authorization: Basic cmltcm9jazpwYXNzd29yZA==
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/600.1.17 (KHTML, like Gecko) Version/7.1 Safari/537.85.10
Referer: http://169.229.85.167:8080/
Content-Length: 243
Accept-Language: en-us

------WebKitFormBoundaryd1YD0OADcYFcuL0v
Content-Disposition: form-data; name="inputfile"; filename="upload.sh"
Content-Type: application/x-sh

git add * ; git commit -a -m "upload" ; git push

------WebKitFormBoundaryd1YD0OADcYFcuL0v--

但如果我将此请求发送到 RESTful 服务器,我会收到以下响应:

HTTP/1.1 415 Unsupported Media Type
connection: keep-alive
server: Cowboy
date: Fri, 24 Oct 2014 04:34:06 GMT
content-length: 0
content-type: text/html
vary: accept

现在,我可能做错了 RESTful 服务器,但我不确定。其中很多都封装在 Cowboy 中,所以我真的不知道它是如何工作的。 RESTful 服务器的请求是否应该不同?

【问题讨论】:

    标签: rest http cowboy


    【解决方案1】:

    如果您使用的是 HTTP POST,则 RESTful 文件上传请求和“普通文件”之间没有真正的区别,无论哪种方式都是 HTTP 请求。

    当您收到415 Unsupported Media Type 响应时,这很可能意味着您的(RESTful)服务器没有Accept 您发布的multipart/form-data 内容类型。您需要查看您的 RESTful 服务器能够接受什么,您可能能够向同一 URL 发送一个 OPTIONS 请求以发现这一点,或者检查服务器端代码。

    【讨论】:

    • 谢谢,那问题肯定出在服务器上。它应该接受multipart/form-data,但出了点问题。
    猜你喜欢
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 2018-12-16
    • 2017-12-25
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    相关资源
    最近更新 更多