我正在研究基於node.js的REST API來管理遠程系統上的文件。要創建一個包含內容的新文件,我正在向請求主體包含文件內容的URI發出一個PUT請求。爲了檢索文件的內容,發出GET請求並且響應主體包含文件內容。REST風格的「複製」方法
但是,我很難確定一種實現複製功能的好方法。我目前唯一有效的方法是發出GET,檢索源文件,然後用PUT請求重新發送內容。
我已經探索過的一個想法是發出一個PUT請求的目標文件,標題中的數據標識要複製數據的源文件。但是,對於那些不太完美的API設計,如果需要的話可以使用。
理想情況下,我希望能夠對目標文件發出PUT請求,並基本上將源文件的GET請求的主體重定向到PUT請求的正文中,而不必將整個文件內容首先下載到客戶端。
我的問題是,有沒有一種有效的/適當的方式,我可以發出一個HTTP/S PUT請求,指定正文內容應該是不同URI的GET請求的主體,而無需首先將它下載到客戶? API當前bahaviors的
例子:
獲取文件的內容(sourcefile.ext)
GET https://server.com/directory/sourcefile.ext
# the body of the response if good is the file contents
創建內容(destinationfile.ext)文件
PUT https://server.com/directory/destinationfile.ext
# the body of the request is the desired file contents
理想的複製功能(的資源文件.ext - > destinationfile.ext)
PUT https://server.com/directory/destinationfile.ext
# somehow tell the request to pull the body from a GET request to
# https://server.com/directory/sourcefile.ext
# being made by the API server rather than the client issuing both requests
# in succession
可以使用,如果必須的話,我會使用它,但是目前在API的其他地方沒有使用?var1=val1&var2=val2
查詢(他們在其他地方不需要),我想保持請求的標準化如果我能幫助它。
發佈您的代碼,以便可以複製和處理問題 – TheDarkKnight
這不是關於特定代碼的問題。更多的是一種方式來提示HTTP/S協議中某種語言或代碼庫的特定行爲。 (加上與此相關的最小工作客戶端和服務器端代碼將遠遠超過適用於有關傳輸協議的問題。) – FatalKeystroke
這是您的API,是否有某些原因您無法提供GET請求,其中參數是現有文件,複製位置?答案是確定的或拒絕訪問或文件不存在或無效的複製名稱。 –