Нужно ли проверять ответ на вызов API? - PullRequest
0 голосов
/ 04 апреля 2019

С микросервисной архитектурой происходит множество сервисных коммуникаций. Ответ от межсервисного вызова должен быть проверен, чтобы подтвердить, отвечает ли объект ответа контракту, установленному посредством открытой спецификации API (Swagger). Объект запроса к REST API проверяется контроллером, но объект ответа не проверяется перед отправкой. Должно ли это быть подтверждено? Клиент должен проверить, когда он получает и до начала обработки. Намерение здесь состоит в том, чтобы избежать нулевой проверки необходимых атрибутов.

Пример:

User:
    type: "object"
    required: 
      - email
      - phone
    properties:
      id:
        type: "integer"
        format: "int64"
      username:
        type: "string"
      firstName:
        type: "string"
      lastName:
        type: "string"
      email:
        type: "string"
      phone:
        type: "string"

 /user:
    post:
      tags:
      - "user"
      summary: "Create user"
      description: "This can only be done by the logged in user."
      operationId: "createUser"
      produces:
      - "application/xml"
      - "application/json"
      parameters:
      - in: "body"
        name: "body"
        description: "Created user object"
        required: true
        schema:
          $ref: "#/definitions/User"
      responses:
        default:
          description: "successful operation"

/user/{username}:
    get:
      tags:
      - "user"
      summary: "Get user by user name"
      description: ""
      operationId: "getUserByName"
      produces:
      - "application/xml"
      - "application/json"
      parameters:
      - name: "username"
        in: "path"
        description: "The name that needs to be fetched. Use user1 for testing. "
        required: true
        type: "string"
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/User"
        400:
          description: "Invalid username supplied"
        404:
          description: "User not found"

В приведенном выше примере вызов создания пользователя завершится ошибкой, если пользовательский объект без электронной почты и телефона будет отправлен на POST. Но / user / {username} может вернуть пользователя с пустым адресом электронной почты и телефоном, поскольку нет подтверждения для ответа.

Было бы лучше проверить ответ перед его отправкой с сервера или передать ответственность за проверку клиенту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...