【RESTful】Пример проектирования интерфейса RESTful API |
【RESTful】Пример проектирования интерфейса RESTful API |

концепция

Сущность: стиль архитектуры программного обеспечения. Ядро: API для дизайна ресурсов.

Чтобы решить проблему:

  • Уменьшите сложность разработки
  • Улучшить масштабируемость системы

Например: Разработайте набор API для обслуживания нескольких терминалов.

концепция дизайна и рекомендации

  • Все в сети можно абстрагировать как ресурс.
  • Каждый ресурс имеет уникальный идентификатор ресурса, и операции с ресурсом не изменят эти идентификаторы.
  • Все операции не имеют состояния (между этой операцией, следующей операцией и последней операцией нет связи).

Ресурс: сущность, конкретная информация в сети.

HTTP

RESTful не имеет никакого отношения к операциям по протоколу HTTP, но спроектирован согласно идеям HTTP, поэтому знание HTTP необходимо.

Ссылка Официальная документация: https://tools.ietf.org/html/rfc2616.

schema://host[:port]/path[?query-string][#author]

  • Схема определяет протокол, используемый базовым уровнем (например, http, https, ftp).
  • хост-серверIP-адресилидоменное имя
  • порт порт сервера, по умолчанию 80
  • путь путь для доступа к ресурсам
  • данные строки запроса, отправленные на http-сервер,Обычно используется дляресурс Выполнить фильтрацию
  • якорь якорь, ссылка
просить
  • Формат:просить ХОРОШО、заголовок сообщения、проситьтекст

просить ХОРОШОФормат: Method Request-URI HTTP-Version CRLF

нравиться: GET/HTTP.1.1 CRLF

  • проситьметод

GET : просить ПолучатьRequest-URI Идентифицированный ресурс POST : В запросе-URI Идентифицированный Добавить новые данные после ресурса HEAD : просить Получать由Request-URIИдентифицированный ресурсизответзаголовок сообщения

PUT : проситьсервер хранит ресурс и использует Request-URI в качестве его идентификатора DELETE :проситьсерверудалитьRequest-URIИдентифицированный ресурс OPTIONS : просить Запроссерверпроизводительность,или Пользовательский запрос иресурс相关из选项和需求

верноресурсиз操作:создавать、редактировать、просить、удалить

ответ
  • Формат: строка состояния、заголовок сообщения、ответтекст

状态ХОРОШОФормат:HTTP-Version Status-Code Reason-Phrase CRLF

нравиться: HTTP/1.1 200 OK

  • Обычно используетсяответкод состояния(существоватьRESTful есть важные приложения)

200 OK //Клиент просить успешно

400 Bad Request //Клиент просить имеет синтаксическую ошибку и не может быть понят сервером

401 Unanthorized //сервер получил запрос, но сервер отказался предоставлять услугу

404 Not Found //проситьресурс不存существовать

500 Internal Serval Error //На сервере произошла непредвиденная ошибка.

503 Сервер недоступен // сервер в настоящее время не может обработать запрос клиента

Разница между архитектурой RESTful и другими архитектурами

Существует несколько способов разработки API. Еще один популярный способ разработки — SOAP WebService.

SOAP WebService

WebService да一种跨编程语言和跨操作系统平台из远程调用технология。Он использует инкапсуляцию формата XML при отправке просить по протоколу HTTP и получении результатов.,и добавил несколько конкретных заголовков HTTP-сообщений,Эти конкретные заголовки HTTP-сообщений и формат содержимого XML представляют собой протокол SOAP.

контраст
  • Эффективность и простота использования: SOAP продолжает расширять содержимое своего протокола в связи с различными потребностями, что приводит к снижению производительности обработки SOAP. В то же время простота использования и стоимость обучения также возросли. И RESTful API существоватьпроситьметод、ресурс、地址都进ХОРОШО了规范,Он максимально использует концепцию дизайна исходного протокола приложения HTTP.
  • Безопасность: RESTful Он больше подходит для интерфейсов на основе ресурсов, которые подходят для сценариев с высокими требованиями к эффективности, но низкими требованиями к безопасности. МЫЛО Его зрелость может быть предоставлена ​​разработчикам, которым необходимо предоставить несколько языков разработки и иметь более высокие требования к безопасности. интерфейс приносит удобство, в целях безопасности можно применять сертификаты на клиенте и сервере. Поэтому важно взглянуть на сценарий применения.

Используйте RESTful

Проектирование RESTful API
  • Путь к ресурсу (URI): Ядро RESTful ориентировано на ресурсы, как планировать Путь к ресурс важен
  • HTTP-глагол(просить Способ):нравитьсяget,post,delete,put
  • Фильтровать Информация: Например, при получении списка ресурсов происходит операция подкачки/операция запроса. В это время Фильтровать необходимо распределять разумно. информацию,Фильтровать информация Слишком большое количество настроек может нарушить RESTful API Что касается ограничений URI.
  • код Состояние: Когда клиент отправляет запрос, какой код ответа должен получить сервер? состояния
  • Обработка ошибки: Какую информацию о состоянии следует возвращать, если обнаружено, что существует проблема с параметрами, переданными клиентом.
  • Возврат результаты: например, при использовании POST-ресурсов необходимо вернуть экземпляр ресурса; при GET-списке ресурсов необходимо вернуть массив ресурсов;
Путь к ресурсу

В архитектуре RESTful каждый URL-адрес представляет собой ресурс, поэтому URL-адрес не может содержать глаголов, а только существительные. Вообще говоря, существительные в API должны стоять во множественном числе. Например, использование пользователей отражает URI ресурса пользователя вместо использования пользователя.

Пример нравиться: Существует API, который предоставляет информацию о зоопарке.,Также включает информацию о различных животных и сотрудниках.,那么它из Путь к ресурс должен выглядеть так.

Язык кода:javascript
копировать
https://api.example.com/v1/zoos  //Ресурсы зоопарка. Используйте заголовок протокола https; добавьте номер версии v1, поскольку API может измениться в будущем. Есть два способа добавить номер версии: один — добавить его к адресу, другой — добавить его в заголовок HTTP «просить зоопарки» во множественном числе;

https://api.example.com/v1/animals //животные ресурсы

https://api.example.com/v1/employees //сотрудникресурс
HTTP-глагол

верноресурсиз操作有создавать、читать、возобновлять、удалить(CURD),Представлен HTTP-глаголом.

  • GET : отсервер Удалятьресурс
  • POST :существоватьсервер Создать новыйресурс
  • PUT:существоватьсервервозобновлятьресурс(客户端提供改变后из完整ресурс,服务端返回完整извозобновлять Поле)
  • PATCH:существоватьсервервозобновлятьресурс(客户端提供改变из属性,Возврат сервера происходит тольковозобновлятьиз Поле)
  • DELETE:отсерверудалитьресурс

примернравиться:

Язык кода:javascript
копировать
POST/zoos : Создать новый зоопарк
GET/zoos/ID : Получить информацию о конкретном зоопарке
PUT/zoos/ID : Обновить информацию для конкретного зоопарка
DELETE/zoos/ID : удалитькакой-то зоопарк
Фильтровать информацию

Если записей слишком много, сервер не сможет вернуть их все пользователю. В этом случае необходим скрининг. При фильтрации API должен предоставить параметр для фильтрации возвращаемых результатов.

примернравиться:

Язык кода:javascript
копировать
?offset = 10 :Укажите начальную позицию возвращаемой записи.
?page = 2&per_page = 100 :Укажите, какая страница и количество записей на странице
?sortby = name&order = asc :обозначение Возврат сортировка результатов и порядок сортировки
?animal_type_id = 1 :Укажите условия фильтра
код состояния

код сервера возвращается пользователю Состояние и оперативная информация, используйте стандартный HTTP-код. состояния

  • 200 ОК сервер успешно вернул данные пользователя просить
  • 201 CREATED Новые или измененные данные успешно
  • 204 NO CONTENT Данные успешно удалены
  • 400 BAD REQUEST В запросе, отправленном пользователем, произошла ошибка.
  • 401 Неавторизованный означает, что пользователь не аутентифицирован и не может выполнить текущую операцию.
  • 403 Forbidden указывает, что доступ пользователя запрещен.
  • 422 Unprocesable Entity При создании объекта произошла ошибка валидации. Например, при создании пользовательского ресурса требуются имя пользователя и пароль, но интерфейс предоставляет только поле имени пользователя, тогда будет возвращено 422. код состояния,и вернуть сообщение об ошибке:”Пароль не может быть пустым“
  • 500 INTERNAL SERVER ERROR Внутренняя ошибка сервера, сервер в данный момент не может обработать просьить.
Обработка ошибок

Если код Состояние равно 4xxили5xx, поэтому пользователю должно быть возвращено сообщение об ошибке. Вообще говоря,В возвращенной информации в качестве имени ключа используется ошибка.,Сообщение об ошибке можно использовать в качестве значения ключа.,примернравиться:

Язык кода:javascript
копировать
{
  "error":"Ошибка параметра"
}
Возврат результатов

Для различных операций (таких как GET, POST) результаты, возвращаемые сервером пользователю, должны соответствовать следующим спецификациям:

  • GET/collections: возвращает список (массив) объектов ресурсов.
  • GET/collections/identity: при чтении ресурсов передайте идентификатор (идентификатор), и сервер вернет один объект ресурса, указанный идентификатором.
  • POST/collections: возвращает вновь созданный объект ресурса.
  • PUT/collections/identity: возвращает полный объект ресурса.
  • PATCH/collections/identity: возвращает измененный атрибут.
  • DELETE/collections/identity : Возвращает 204код состояния ВАКЁответтело

Клиент DHC для тестирования API

  • Установите плагин DHC Google Chrome:

Названный: Клиент веб-службы на основе REST Сначала скачайте: http://chromecj.com/web-development/2015-03/401.html

или в магазине Google :https://chrome.google.com/webstore/detail/rest-web-service-client/ecjfcmddigpdlehfhdnnnhfgihkmejin?hl=zh-CN

Затем установите.

Настройка локальной среды разработки

  • Установите пакет интеграции среды PHP. XAMPP или upupw
  • Добавьте виртуальные хосты и снимите ограничения на межсайтовые каталоги. httpd-vhosts.conf文件中 找到添加из域名,Воляphp_admin_value xxx这句开头加入井号进ХОРОШО注释
  • Добавить разрешение локальных хостов виртуального хоста : Измените файл локальных хостов и добавьте 127.0.0.1 api.com本地域名解析

Подтвердить элементы дизайна

Требования к проекту
  • Вход пользователя, регистрация
  • Публикация статей, редактирование, управление, листинг
Подтвердить элементы дизайна
  • Путь к ресурсу: /users , /articles
  • HTTP-глагол: GET,POST,DELETE,PUT
  • Фильтровать информацию: Фильтрация статей по страницам
  • код состояния: 200,404,422,403…
  • Обработка ошибок: Вывод сообщения об ошибке формата JSON
  • Возврат результаты: Выходной массив JSON и объект JSON.

Проектирование базы данных

Создайте в базе данных 2 новые таблицы:

  • Таблица пользователей: идентификатор, имя пользователя, пароль, время регистрации.
  • Таблица статей: идентификатор статьи, заголовок, содержание, время публикации, идентификатор пользователя.

Добавить файл перезаписи .htaccess Apache.

После этого вы можете выполнить соответствующую работу по разработке и кодированию в IDE.

Конечно, имея дело с RESTful Идея дизайна API, а также недавно популярный GraphQL — это язык запросов API, который вводит идею о том, что вы видите то, что вы получаете, что может помочь улучшить процесс разработки и производительность приложений. (ссылка: http://graphql.cn/ )

ссылка

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose