Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
REST-使用临时上载的文件获取响应_Rest - Fatal编程技术网

REST-使用临时上载的文件获取响应

REST-使用临时上载的文件获取响应,rest,Rest,我知道标题不太正确,但我不知道如何命名这个问题 目前,我正试图为转换服务设计我的第一个REST-API。因此,用户有一个输入文件,该文件被提供给服务器并返回转换后的文件 我目前遇到的问题是,应该使用简单的GET/conversionservice/my/url访问转换后的文件。但是,无法在GET请求中上载输入文件。一个帖子是必要的(我说的对吗?),但帖子是不可缓存的 现在我的问题是,设计这个的正确方法是什么?我知道可以先将输入文件上载到服务器,然后使用GET请求访问它,但这些输入文件可能就是一切

我知道标题不太正确,但我不知道如何命名这个问题

目前,我正试图为转换服务设计我的第一个REST-API。因此,用户有一个输入文件,该文件被提供给服务器并返回转换后的文件

我目前遇到的问题是,应该使用简单的GET/conversionservice/my/url访问转换后的文件。但是,无法在GET请求中上载输入文件。一个帖子是必要的(我说的对吗?),但帖子是不可缓存的

现在我的问题是,设计这个的正确方法是什么?我知道可以先将输入文件上载到服务器,然后使用GET请求访问它,但这些输入文件可能就是一切


感谢您的帮助:)

上传文件实际上需要POST请求。不可缓存这一事实不应该困扰服务,因为任何中介(浏览器、服务器、代理等)如何知道文件的内容。如果您需要cachability,您必须自己实现它,可能需要上传文件的散列(md5、sha1等)。这将使您不必执行两次实际转换,但您必须对上载的每个文件进行哈希运算,这将导致“缓存未命中”的速度减慢

我能想到的解决问题的唯一其他方法是,要求用户在查询字符串中向文件传递一个可访问的url,然后您可以处理GET请求,但您的用户必须使该文件可以通过internet访问。这将允许缓存,但会限制可用性

也许一种混合的方法是可能的,你可以接受一个上传文件的帖子和一个url的GET,这将增加服务的复杂性,但最大限度地提高可用性

此外,您还应该了解您感兴趣利用哪些缓存,因为很多缓存对缓存项的大小有限制,这意味着如果文件足够大,它无论如何都不会缓存


最后,我建议你坚持已经确立的标准。接受文件上传的POST请求,如果您有兴趣加快用户体验,可能会使上传持续,这将允许用户上传一次文件并以多种不同格式下载。

事件顺序如下:

  • 使用POST上传您的文件。对于即时响应,您可以使用自己的标题返回所需信息。(它应该返回文档密钥以访问该文件供将来使用。)
  • 然后,您可以使用GET进行进一步的操作,使用上述文档键作为查询字符串