Вопросы с тегом «api-design»

Разработка интерфейса прикладного программирования (API) обсуждает лучшие практики для создания библиотек, предназначенных для общего или общественного использования.

322
Стоит ли писать свой бэкэнд как API?

Сегодня у меня была горячая дискуссия о нашем приложении MVC. У нас есть веб-сайт, написанный на MVC ( ASP.NET ), и он обычно следует шаблону «сделать что-то» в представлении -> нажать на контроллер -> контроллер строит модель (вызывает менеджера, который получает данные, строит модель в Сам...

151
Что такое антикоррупционный слой и как он используется?

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

137
Как поиск вписывается в интерфейс RESTful?

При разработке интерфейса RESTful семантика типов запросов считается жизненно важной для проекта. GET - список коллекции или получить элемент PUT - заменить коллекцию или элемент POST - Создать коллекцию или элемент УДАЛИТЬ - Ну, ну, удалить коллекцию или элемент Тем не менее, это не похоже на...

124
Должно ли решение быть настолько общим, насколько это возможно, или настолько конкретным, насколько это возможно?

Скажем, у меня есть объект с атрибутом «тип». Там может быть более 20 возможных типов. Теперь меня попросили реализовать что-то, что позволило бы изменить тип с A-> B, что является единственным вариантом использования. Так я должен реализовать что-то, что позволяет произвольные изменения типа,...

56
Должен ли я возвращать статус HTTP 400 (неверный запрос), если параметр синтаксически правильный, но нарушает бизнес-правило?

Скажем, у меня есть конечная точка REST, которая принимает целое число в качестве параметра: /makeWaffles?numberOfWaffles=3 В этом случае я хочу, чтобы число было положительным, потому что я не могу сделать отрицательное число вафель (а запрос 0 вафель - пустая трата времени). Поэтому я хочу...

51
Каким должен быть код состояния http для ошибки «Служба недоступна в вашем регионе»?

Наш сервис сейчас в 5 городах. Если кто-то пытается вызвать наш сервис API из любого другого города, мы хотим выбросить эту ошибку Service not available in your area. Вопрос в том, какой код http будет подходящим для этой ошибки? сервис 503 недоступен 403: запрещено или что-то...

51
Стоит ли защищаться от неожиданных значений внешних API?

Допустим, вы кодируете функцию, которая получает данные от внешнего API MyAPI. Этот внешний API MyAPIимеет контракт, в котором говорится, что он возвратит a stringили a number. Является ли он рекомендовал , чтобы защититься от таких вещей , как null, undefined, booleanи т.д. , даже если это не...

50
RESTful API дизайн. Что я должен вернуть, если нет строк?

В настоящее время я пишу API для социальной сети с Slim Framework. Мой вопрос: каковы лучшие практики, когда в структуре json нет строк для возврата? Допустим, этот вызов / v1 / get / movies возвращает 2 строки из таблицы названий фильмов: [ {"name": "Ghostbusters"}, {"name": "Indiana Jones"} ] Но...

49
Много маленьких запросов против нескольких больших запросов (API Design)

В настоящее время я работаю над проектом с организацией следующим образом: Клиент - получает данные с главного сервера через REST API. Сервер - запрашивает данные с других серверов через сторонние API Сторонние API - не зависящие от меня сервисы, предоставляющие данные на сервер (Reddit,...

48
Почему метод PATCH не идемпотентен?

Мне было интересно об этом. Предположим , у меня есть userресурс с idи nameполей. Если я хочу обновить поле, я мог бы просто сделать запрос PATCH к ресурсу, как это PATCH /users/42 {"name": "john doe"} И тогда приложение обновит имя пользователя 42. Но почему, если я повторю этот запрос, результат...

45
Насколько необходимо следовать методам защитного программирования для кода, который никогда не станет общедоступным?

Я пишу Java-реализацию карточной игры, поэтому я создал специальный тип Collection, который я называю Zone. Все методы модификации Java Collection не поддерживаются, но в Zone API есть метод move(Zone, Card), который перемещает карту из заданной зоны в себя (выполняется с помощью методов, закрытых...

42
Что такого плохого в DOM?

Я продолжаю слышать, как люди (в частности, Крокфорд) говорят, что DOM - ужасный API, но на самом деле не оправдывают это утверждение. Помимо кросс-браузерных несоответствий, по каким причинам DOM считается настолько...

41
Почему java.util.ArrayList позволяет добавлять нуль?

Интересно, почему java.util.ArrayListпозволяет добавить null. Есть ли какой-либо случай, когда я хотел бы добавить nullк ArrayList? Я задаю этот вопрос , потому что в проекте мы имели ошибку , когда некоторый код добавлял nullк , ArrayListи это было трудно определить , где ошибка была. Очевидно,...

41
ноль против отсутствующего ключа в ответе REST API [закрыто]

Скажем, в моем приложении некоторые пользователи дают нам свою фамилию, а другие нет. В ответе REST API, какое тело является предпочтительным: С нулевым значением: {"firstName": "Bob", "lastName": null} Или просто отсутствующий ключ: {"firstName": "Bob"}...

39
Должен ли REST API возвращать 500 Internal Server Error, чтобы указать, что запрос ссылается на несуществующий объект?

Я работаю с REST API, который находится на сервере, который обрабатывает данные для множества устройств IoT. Моя задача - выполнить запрос к серверу с помощью API для сбора конкретной информации о производительности указанных устройств. В одном случае я получаю список доступных устройств и их...

38
REST API - должен ли API возвращать вложенные объекты JSON?

Когда дело доходит до API JSON, рекомендуется ли выравнивать ответы и избегать вложенных объектов JSON? В качестве примера, скажем, у нас есть API, похожий на IMDb, но для видеоигр. Существует пара сущностей: Game, Platform, ESRBRating и GamePlatformMap, которые отображают игры и платформы....

38
Есть ли шаблон для обработки конфликтующих параметров функции?

У нас есть функция API, которая разбивает общую сумму на ежемесячные суммы на основе заданных дат начала и окончания. // JavaScript function convertToMonths(timePeriod) { // ... returns the given time period converted to months } function getPaymentBreakdown(total, startDate, endDate) { const...

37
Как описать архитектурный сдвиг, который намеренно нарушает стандарты REST?

Я предлагаю внести изменения в очень плохо спроектированный программный проект, который страдает от множества проблем. На высоком уровне проект использует Angular на внешнем интерфейсе и использует различные API REST; что все замечательно (я не вижу необходимости менять нашу технологию или...

33
Должен ли HTTP API всегда возвращать тело?

Есть ли какой-то стандарт в отношении ответов HTTP API? Прочитав эту беседу я начал задумываться. Мы разрабатываем наш общедоступный HTTP JSON API на моей работе, и мы ничего не возвращаем, когда это не является строго необходимым (например, PUT для / resource / {id} возвращает только 200, когда OK...

31
Почему Math.Sqrt () является статической функцией?

При обсуждении статических методов и методов экземпляров я всегда думаю, что это Sqrt()должен быть метод экземпляров числовых типов, а не статический метод. Почему это? Это очевидно работает на значение. // looks wrong to me var y = Math.Sqrt(x); // looks better to me var y = x.Sqrt(); Типы...