write:pets и read:pets являются Oauth2 scopes
и не связаны с OpenAPI (fka. Swagger) operations categorization
.
Области действия Oauth2
Когда API защищен с помощью Oauth, области используются для предоставления различных прав/привилегий потребителю API. Области определяются именем (вы можете использовать все, что хотите).
Авторизация областей Oauth в SwaggerUI, который может действовать как потребитель API:
< /а>
В этом случае этот защищенный API oauth2 предлагает 2 области действия:
- write:pets: изменить питомцев в своей учетной записи
- read:pets: читай своих питомцев
При описании API со спецификацией OpenAPI (fka. Swagger) вы можете определить эти области, как показано в вопросе.
Но только определение этих областей бесполезно, если вы не объявляете, какие операции покрываются этими областями. Это делается путем добавления этого к операции:
security:
- petstore_auth:
- read:pets
В этом примере операция доступна потребителю API, только если ему разрешено использовать область действия read:pets
. Обратите внимание, что одна операция может принадлежать нескольким областям oauth2, а также нескольким определениям безопасности.
Подробнее о безопасности в OpenAPI (fka. Swagger) можно прочитать здесь
Классификация операций OpenAPI (fka. Swagger)
Независимо от области действия OAuth2, если вам нужно классифицировать операции API, вы можете использовать tags
:
tags:
- pets
Если добавить это к операции, она будет помещена в категорию pets
. Одна операция может относиться к нескольким категориям.
Эти категории используются SwaggerUI для перегруппировки операций. На снимке экрана ниже мы видим 3 категории (домашнее животное, магазин и пользователь):
Подробнее о категориях можно прочитать здесь:
Вот полный пример использования областей Oauth2 и категории
swagger: "2.0"
info:
version: "1.0.0"
title: Swagger Petstore
securityDefinitions:
petstore_auth:
type: oauth2
authorizationUrl: http://petstore.swagger.io/api/oauth/dialog
flow: implicit
scopes:
write:pets: modify pets in your account
read:pets: read your pets
paths:
/pets/{petId}:
parameters:
- in: path
name: petId
description: ID of pet that needs to be fetched
required: true
type: integer
format: int64
get:
tags:
- pets
summary: Find pet by ID
responses:
"404":
description: Pet not found
"200":
description: A pet
schema:
$ref: "#/definitions/Pet"
security:
- petstore_auth:
- read:pets
delete:
tags:
- pets
summary: Deletes a pet
responses:
"404":
description: Pet not found
"204":
description: Pet deleted
security:
- petstore_auth:
- write:pets
definitions:
Pet:
type: object
properties:
id:
type: integer
format: int64
name:
type: string
example: doggie
person
Arnaud Lauret
schedule
23.07.2016