Я разработал сервер, который принимает файл 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
Запрос Curl возвращает ошибку 401: токен авторизации не предоставлен, даже если присутствует API-ключ Swagger. ⇐ Python
Программы на Python
1737386258
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
Подробнее здесь: [url]https://stackoverflow.com/questions/79371780/curl-request-returns-error-401-no-authorization-token-provided-even-if-the-swa[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия