RESTful API

Артём Кухаренко

План лекции

  1. REST
  2. HTTP/1.1
  3. HTTP based RESTful API

  4. Аутентификация и Авторизация
  5. Сессии
  6. CORS
 

REST

Representational state transfer

Web resource

сущность или действие, которое может быть идентифицировано и обработано в Интернете.

Конечный автомат

 математическая абстракция, модель дискретного устройства, имеющего один вход, один выход и в каждый момент времени находящегося в одном состоянии из множества возможных.

Предположим, что web-сервис - это конечный автомат, где состояния автомата представлены набором веб ресурсов приложения. Тогда клиент сервиса, зная URI ресурса и выполняющего над ресурсом определенный  набор действий, способен менять состояние автомата, а также получать представление состояния автомата.

Набор правил REST

  • Client-server architecture
  • Statelessness
  • Cacheability
  • Layered system

  • Uniform interface

Правила Uniform Interfacce

  • Resource identification in requests
  • Resource manipulation through representations
  • Self-descriptive messages

  • Hypermedia as the engine of application state

HTTP/1.1

HTTP based RESTful API

 

Из HTTP используем

  • HTTP методы
  • HTTP статусы
  • HTTP заголовки

HTTP методы

  • GET
  • POST
  • PUT
  • PATCH
  • DELETE

Примеры статусов

  • 200
  • 204

  • 400
  • 401

  • 500

Примеры форматов представлений

  • JSON
  • XML
  • HTML

Аутентификация и Авторизация 

Главное отличие аутентификации от авторизации заключается в том, что аутентификации определяет, кем является пользователь, а авторизация, что пользовать способен совершить.

Аутентификация

В большинстве случаев выполнение  аутентификации совершается с помощью имени пользователя (имейла) и (или) пароля.

Парольные рекомендации 

  • Используйте хэш

  • С хэшом используйте соль

Авторизация

Для авторизованных запросов чаще всего используется Access Token

JWT рекомендации

  • Не добавляйте sensitive данные в токен
  • Храните токен в сессии, а не localStorage

Сессия

Сессионные рекомендации

  • httponly
  • secure

CORS

MVC

12 - RESTful API

By Startup Summer