Здесь разберем ошибки в описании конечной точки Surfreport из практического занятия: Что не так с разделом API?
Описание ресурса
- много слов, описание должно быть более кратким и ориентированным на действия;
- “Surfreport”, в названии не следует использовать заглавные буквы.
Конечные точки
- GET/POST: должен быть только один метод, в этом случае GET;
- лишнее двоеточие {:beachId};
- можно выделить цветом {beachId}
Параметры
- параметры строки запроса перемешаны в одной и той же таблице, что и параметры
Path. Лучше разделить на разные таблицы; - не понятно, где брать ID пляжа;
NumberиIntegerпотенциально противоречивы. ТехническиNumberотносится к числу с плавающей запятой (float) или к (double) (что допускает десятичные дроби), аInteger- это целое число. В данном случае вряд ли идентификаторы пляжа имеют десятичные дроби;- отсутствует значение параметра
timeпо умолчанию; - что касается типов данных
time: почему некоторые типы данных имеют примеры, но не все?
Пример запроса
- пример запроса не в формате curl;
- показан только один параметр строки запроса,
timeтоже должно быть; - включен параметр
zip, но нигде не определен; appIDвключает длинный ключ API, который, должен быть сокращен до такой переменной, какAPIKEY.
Пример ответа
- включен
riptide, но отсутствует его определение в определениях ответа; - у
riptideотсутствует запятая во втором экземпляре; riptideне указан в третьем экземпляре;- неверное форматирование отступа для
riptide.
Определения ответа
- для параметра
windне указаны единицы измерения; - для параметра
wind“int” следует указывать как “integer”; - для параметра
watertempне указаны единицы измерения; - тип данных для
surfheightуказан как “Map”, а должен быть “integer”; recommendationне включает в себя более подробную информацию, например, сколько возможных строк с рекомендациями и что они вообще значат;surfheightдолжен быть одинаковым: илиsurf_heightилиsurfheightи в примере ответа и в таблице определений ответа;- отсутствует иерархия для дочерних элементов (пример:
tide,wind,watertemp)