В моем случае я импортирую следующие модули:
import win32com.client as win32
from win32com.client import Dispatch
win32c = win32.constants
Я использую win32 для открытия файлов Excel:
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Open(xlsx_file)
wb.Save()
excel.Application.Quit()
Идемпотентность не означает, что у запроса не должно быть побочных эффектов (это то, что описывает свойство «safe»). Это просто означает, что выполнение одного и того же запроса несколько раз не приведет к различным или дополнительным побочным эффектам.
По моему мнению, последующий запрос DELETE должен возвращать ошибку - он все еще идемпотентен, потому что состояние сервера такое же, как если был сделан только один запрос DELETE. Тогда снова возвращение статуса 200 OK также должно быть в порядке - я не думаю, что для идемпотентности требуется возвращение кода ошибки для последующих запросов DELETE - просто возвращение статуса ошибки, кажется, делает больше смысл для меня.