我正在设计一个 REST API 来上传一个较大的 (100MB) 文件和一些信息。所以很自然的想到json编码。
所以像这样:
{
file: content of the file or URL?
name: string
description: string
}
名称和描述很容易用 json 做,但我不确定如何将文件内容添加到它。
另外我在想我应该使用 http PUT 方法。这是正确的吗?
顺便说一下,如果重要的话,golang 用于实现这个 API。
最佳答案
对于 JSON 编码,使用 []byte
值来保存文件内容。标准编码/json 包将 []byte
值编码为 base64 字符串。
下面是如何实现 JSON 编码的草图。声明一个表示有效载荷的类型:
type Upload struct {
Name string
Description string
Content []byte
}
将文件编码为请求正文:
v := Upload{Name: fileName, Description: description, Content: content}
var buf bytes.Buffer
if err := json.NewEncoder(&buf).Encode(v); err != nil {
// handle error
}
req, err := http.NewRequest("PUT", url, &buf)
if err != nil {
// handle error
}
resp, err := http.DefaultClient.Do(req)
从服务器上的请求主体解码:
var v Upload
if err := json.NewDecoder(req.Body).Decode(&v); err != nil {
// handle error
}
另一种选择是使用 mime/multipart包裹。多部分编码将比 JSON 编码更有效,因为多部分不需要文件的 base64 或其他文本编码。
关于json - 用于在 JSON 中上传文件的 REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25860391/