以api为中心的web应用程序文件上传


API-centric web application file upload

我正在使用PHP创建一个以api为中心的web应用程序。我读了很多关于以api为中心的架构和设计的文章,但是我遇到了一个与文件上传相关的问题。

假设我有一个图像,我想把它上传到API服务器。我应该如何上传该图像,然后如何接收到该图像的链接?

下面是我现在创建它的方法:

  1. 在客户端www.domain.com上使用<input type="file">选择一个映像
  2. 通过POSTmultipart/form-data上传到www.domain.com
  3. 使用PUT/POST API调用发送此图像到api.domain.com
  4. api.domain.com将此图像保存到另一个服务器,如static.domain.com,并将图像的id存储在数据库
  5. 然后,当我需要这个图像时,我可以使用GET API调用api.domain.com,我将接收图像的url(类似static.domain.com/image.jpg)

Aditional问题:

  • 这种方法是正确的还是我完全错了?
  • 如果我的应用程序很小,我是否需要一个额外的服务器来存储上传的文件,或者我可以在API服务器上存储文件?
  • 如果我将图像存储在相同的服务器作为API服务器,如果图像url将看起来像api.domain.com/image.jpg不会很奇怪吗?

p。S:我们可以跳过很多api相关的东西,因为我只需要知道如何处理文件上传。

您并没有真正说明您将在这里实现什么样的API,所以我假设它只是一个restful API。

  • 这种方法是正确的还是我完全错了?
不,我不会说你做错了。实际上,您将使用POST发送文件。
  • 如果我的应用程序很小,我是否需要一个额外的服务器来存储上传的文件,或者我可以在API服务器上存储文件?

是的,它将允许您将此存储在同一服务器上,我不明白为什么不。如果应用程序很小,我怀疑您是否会使用大量存储。

  • 如果我将图像存储在相同的服务器作为API服务器,如果图像url将看起来像api.domain.com/image.jpg不会很奇怪吗?

api.domain.com/image.jpg在技术上只是连接到API的URL和GET/POST数据。这并不意味着文件将是那个URL。API可以返回如下内容:

{
   type: "IMG", 
   id: "1", 
   url: "example.com/uploads/image.jpg"
}

我希望这能帮到你,哪怕是一点点!