我正在开发直接转S3服务,该服务分为两部分,如下所述。浏览器不会使用此服务,但它将是其他软件客户端使用的RESTful API。
PUT
请求,实际上传到S3。服务器应如何构建第一个端点的响应?
我正在考虑的第一个选项是使用GET
并返回状态代码302,其中包含要上传的网址的Content-Location
标头。但是,规范中重定向描述背后的意图似乎主要集中在表单提交后的重定向。
我正在考虑的另一个选项是使用POST
作为第一个端点并返回带有URL的Location
标头,如下所述:
如果已在源服务器上创建资源,则为响应 应该是201(创建)并包含一个描述该实体的实体 请求的状态,并引用新资源和位置 头。 RFC 2616 #9.5
请告知其他人在这种情况下使用了什么?
答案 0 :(得分:1)
我认为这主要取决于您的API本身是否具有引用上传文件的资源。唯一知道上传文件的是S3本身,或者你的API有引用它的东西吗?
如果第一种情况只有S3知道它,那么如果它仅仅作为上传参数的生成器,包括URI,则可以使用GET
。
如果是第二种情况,那么它不应该是GET
,因为您正在改变您的一面。是的,您应该创建POST
,但应使用Location
标头返回引用上传文件的已创建资源的URI。该资源可能具有上传URI,它可以像状态机一样,跟踪文件是否上传。为了避免客户在上传之前需要获取该资源,您可以在Link
标题中返回上传URI,其中rel
反映了此目的。