Запрос Curl возвращает ошибку 401: токен авторизации не предоставлен, даже если присутствует API-ключ Swagger.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Запрос Curl возвращает ошибку 401: токен авторизации не предоставлен, даже если присутствует API-ключ Swagger.

Сообщение Anonymous »

Я разработал сервер, который принимает файл CSV и записывает его в облаке, используя Python (соединение, колба) и Swagger. Все работало нормально, все запросы на завивку вернули 200, и файл был сохранен правильно.
Однако, поскольку я добавил аутентификацию по ключу API в файл yml, запросы на завивку всегда возвращались. эта ошибка:
{
"detail": "No authorization token provided",
"status": 401,
"title": "Unauthorized",
"type": "about:blank"
}

Для файла yml я использовал документацию swagger v2, и мне кажется, что все в порядке, поэтому я не понимаю, в чем проблема. Надеюсь, некоторые из вас смогут понять, почему это происходит.
Просьба:
curl --location 'http://localhost:5000/v1/public/function' \
--header 'x-api-key: apikey' \
--form 'key1="value1"' \
--form 'key2="value2"' \
--form 'key3="value3"' \
--form 'file=@"/path/to/file/file.csv"'

Файл YML:
swagger: "2.0"
info:
description: This is the swagger file that goes with our server code
version: "1.0.0"
title: Swagger REST Article
consumes:
- "application/json"
produces:
- "application/json"

securityDefinitions:
APIKeyHeader:
type: apiKey
in: header
name: x-api-key

basePath: "/v1"

paths:
/public/function:
post:
operationId: "file.function"
consumes:
- multipart/form-data
security:
- APIKeyHeader: []
parameters:
- in: formData
name: file
type: file
required: true
description: The file to upload.
- in: formData
name: key1
type: string
required: false
- in: formData
name: key2
type: string
required: false
- in: formData
name: key3
type: string
required: false
responses:
200:
description: "Successful request"
schema:
type: "string"
items:
properties:
response:
type: "string"

Сервер:
app = connexion.App(__name__, specification_dir='./')
CORS(app.app)
app.add_api('swagger.yml')
@app.route('/')
def home():
"""
This function just responds to the browser ULR
localhost:5000/
"""

if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)

Файл для аутентификации:
from connexion.exceptions import OAuthProblem

APIKEY_DB = {
"apikey": {
"uid": 1
}
}

def apikey_auth(apikey):
print(apikey)
info = APIKEY_DB.get(apikey)
print(info)

if not info:
print("Invalid token")
raise OAuthProblem('Invalid token')

print("Valid token")

return info


Подробнее здесь: https://stackoverflow.com/questions/793 ... if-the-swa
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»