Я создаю REST API, используя Eve.Eve работает на Nginx и uwsgi в контейнере Docker.
Версия Python : 3.6.5
Eve : 0.8
Eve-SQLAlchemy : 0.5.0
Когда я отправляю GET-запрос на ресурсы и элементы, проблем нет.Однако когда я отправляю запрос PATCH или DELETE, сервер API возвращает страницу 50xError Nginx по умолчанию.
Журналы выглядят так:
[pid: 12|app: 0|req: 22/22] 192.168.99.1 () {46 vars in 691 bytes} [Wed Jun 6 22:55:26 2018] PATCH /maintenances/18 => generated 0 bytes in 11 msecs (HTTP/1.1 500) 0 headers in 0 bytes (0 switches on core 0)
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/eve/flaskapp.py", line 1043, in __call__
return super(Eve, self).__call__(environ, start_response)
File "/usr/lib64/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/lib64/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/usr/lib64/python3.6/site-packages/flask/app.py", line 1741, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/lib64/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/usr/lib64/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/usr/lib64/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/lib64/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/lib64/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/usr/lib64/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/lib64/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/lib/python3.6/site-packages/eve/endpoints.py", line 96, in item_endpoint
response = patch(resource, **lookup)
File "/usr/lib/python3.6/site-packages/eve/methods/common.py", line 297, in rate_limited
return f(*args, **kwargs)
File "/usr/lib/python3.6/site-packages/eve/auth.py", line 78, in decorated
return f(*args, **kwargs)
File "/usr/lib/python3.6/site-packages/eve/methods/common.py", line 1181, in decorated
r = f(resource, **combined_args)
File "/usr/lib/python3.6/site-packages/eve/methods/patch.py", line 41, in patch
skip_validation=False, **lookup)
File "/usr/lib/python3.6/site-packages/eve/methods/patch.py", line 134, in patch_internal
original = get_document(resource, concurrency_check, **lookup)
File "/usr/lib/python3.6/site-packages/eve/methods/common.py", line 80, in get_document
**lookup)
TypeError: find_one() takes 3 positional arguments but 5 were given
Когда я удаляю аутентификацию из запроса,сервер возвращает «Пожалуйста, предоставьте правильные учетные данные», но когда я удаляю заголовок «If-Match» из запроса, сервер возвращает эту ошибку.(Таким образом, возможно, что какой-то процесс, существующий между аутентификацией и проверкой etag, является причиной этой ошибки.