作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想为文件上传服务创建一个 REST API,允许用户:
然后,回来处理他们在上一个 session 中上传的文件。
为了方便处理有关每个文件的数据以及处理文件本身的内容,这是我正在考虑使用的 URI 方案:
/sessions/
/sessions/3
/sessions/3/files
/sessions/3/files/5
/sessions/3/file/5/content
/sessions/3/file/5/metadata
这将允许文件元数据与文件内容分开处理。在这种情况下,仅允许对文件内容和文件元数据进行GET操作,并且要更新其中任何一个,必须放置一个新文件。
这有道理吗?如果没有,为什么以及如何才能更好?
最佳答案
为什么需要 session ?是出于身份验证和授权的原因吗?如果是这样我会使用 http basic使用 SSL 或 digest 。因此,没有开始或结束 session ,因为 http 是无状态的,并且每个请求都会发送安全 header 。
上传资源的建议是直接映射为私有(private)文件系统
# returns all files and subdirs of root dir
GET /{userId}/files
GET /{userId}/files/file1
GET /{userId}/files/dir1
# create or update file
PUT /{userId}/files/file2
上传文件内容时,您将使用 multipart content type .
我将通过在上传有效负载内引入链接(到文件内容)来设计您想要的文件内容和有效负载分离。它简化了资源结构。
表示“上传”资源:
{
"upload-content" : "http://storage.org/2a34cafa" ,
"metadata" : "{ .... }"
}
资源操作:
# upload file resource
POST /files
-> HTTP 201 CREATED
-> target location is shown by HTTP header 'Location: /files/2a34cafa
# /uploads as naming feels a bit more natural as /files
POST /sessions/{sessionId}/uploads
-> HTTP 201 CREATED
-> HTTP header: 'Location: /sessions/{sessionId}/uploads/1
-> also returning payload
# Updating upload (like metadata)
/PUT/sessions/{sessionId}/uploads/1
关于文件上传的 REST 设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8436224/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!