Обмен технологиями

Введение в спецификации проекта/кода и Apifox

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Оглавление

Оглавление

1. Характеристики проекта:

(1) Структура проекта:

(2) Передаваемый объект данных

2. Характеристики кода:

(1) Соглашение об именовании базы данных:

(2) Характеристики аннотации:

(3) Характеристики именования:

(4) Технические характеристики внешнего и внутреннего интерфейса:

(5) Другие характеристики:

3. Использование Апифокс:

(1) Загрузка и установка:

(2) Создайте новый проект и пригласите своих товарищей по команде:

(3) Написание спецификаций для интерфейсных документов.

4. Функция отладки (необходимо знать серверную часть)

5. Категория теста

6. На что следует обратить внимание:

(Один человек не может управлять страной!!!)


1. Характеристики проекта:

(1) Структура проекта:

Конкретные из них:

(1) Уровень сущностей: Уровень сущностей хранит конкретные сущности объектов, соответствующие объектам в базе данных.

(2) Уровень DAO: (может быть разделен на два уровня (уровень интерфейса Dao и уровень реализации Dao)) — это уровень, который взаимодействует с базой данных, включая некоторые операции добавления, удаления, изменения и запроса базы данных.

(3) Уровень сервиса (может быть разделен на два уровня (уровень интерфейса сервиса и уровень реализации сервиса)): в основном отвечает за логическое проектирование приложений бизнес-модулей.

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

(5) Уровень утилит. На уровне инструментов размещаются часто используемые классы инструментов. Например, некоторые распространенные методы могут быть написаны как служебные функции, а затем можно упростить общий код.

(6) Уровень исключений: вы можете написать унифицированный уровень исключений возврата.

(7) Уровень фильтра: Уровень фильтра, например единая фильтрация аутентификации личности. Если фильтр не проходит, он будет работать только в гостевом режиме.

(2) Передаваемый объект данных

DTO — это структура данных, отправляемая внешним запросом.

VO — это ответ, возвращаемый серверной частью в ответ на запрос, отправленный внешним интерфейсом.

PO — это фактическое соответствие между объектной сущностью и таблицей объектов базы данных.

BO — объектная сущность в процессе бизнес-обработки.

2. Характеристики кода:

Пожалуйста, назовите его на английском языке, а не на китайском пиньинь.

Будьте простыми для понимания, а не причудливыми.

Используйте горбовые имена вместо обычных имен.

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

Будьте аннотированы, а не индивидуалистичны.

Спецификация кодирования языка Java - Спецификация кодирования языка Java (китайская версия) - Интернет-документация - Материалы по программированию JAVA Niubi Station (javanb.com)значок-по умолчанию.png?t=N7T8http://doc.javanb.com/code-conventions-for-the-java-programming-language-zh/index.html#312

Не используйте ключевые слова, зарезервированные слова и т. д., которые имеют особое значение в самой Java! ! !

(1) Соглашение об именовании базы данных:

(1) Имя таблицы уникально, и несколько имен таблиц не могут использовать одно и то же имя.

(2) Имя таблицы должно состоять из строчных букв и символов подчеркивания. Старайтесь избегать использования заглавных букв или специальных символов. Используйте «user_info», например, «tbl_user» или «tbl_user_info».

(3) Не конфликтовать с ключевыми словами,Чтобы отключить зарезервированные слова, такие как Like, Desc, Range, Match, Delayed и т. д., обратитесь к официальным зарезервированным словам MySQL.

(4) Имя поля базы данных: оно состоит из 26 английских букв (с учетом регистра) плюс подчеркивание «_», например «user_id», «user_name», «user_password», «user_register_time», «user_login_time».

(5) Спецификации первичного и внешнего ключа:

Имя индекса первичного ключа — имя pk_field; уникальное имя индекса — имя uk_field; обычное имя индекса — имя idx_field.
проиллюстрировать: pk_ — это первичный ключ; uk_ — это уникальный ключ, idx_ — это сокращение от индекса.

Первичный ключ: pk_+имя таблицы.
Например:pk_main
Внешний ключ: fk_+имя подчиненной таблицы+_+имя основной таблицы
Например:fk_sub_main

(6) Десятичный тип является десятичным, а числа с плавающей запятой и двойным запрещены.
(7) Три обязательных поля для таблицы: id, create_time, update_time.

(2) Характеристики аннотации:

(1) Аннотация класса:

Аннотации класса (Class) в основном используются для объявления того, для чего используется класс, а также некоторой информации, такой как создатель, версия даты создания, имя пакета и т. д.:

/**
* @версия: V1.0
* @автор: fendo
* @className: пользователь
* @packageName: пользователь
* @description: Это класс пользователя.
* @data: 2024-07-01 12:20
 **/

(2) Аннотация метода (Конструктор):

Для однострочных комментариев внутри метода начните новую строку над комментируемым оператором и используйте // комментарий. Используйте /* */ для многострочных комментариев внутри методов.
Комментарии должны соответствовать коду. Все абстрактные методы (включая методы в интерфейсах) должны быть аннотированы Javadoc. Помимо возвращаемых значений и описаний исключений параметров, в них также должно быть указано, что делает метод и какие функции он реализует.Аннотации метода (Конструктор) также можно использовать для объявления параметров, возвращаемых значений и другой информации класса:

/**
* @автор: fendo
* @methodsName: addUser
* @description: добавить пользователя
* @параметр: хххх
* @return: Строка
* @броски:
*/

(3) Комментарии к блоку кода: объясняют назначение определенной части вашего кода.

/**
* Создать экземпляр пользователя
* ххххххх
 */
Пользователь пользователь=новый Пользователь();

(4) Комментарии из одного предложения: прокомментируйте свой индивидуальный код.

Пользователь user=new User(); //Создание экземпляра пользователя

(3) Характеристики именования:

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

(1) Имя класса использует стиль UpperCamelCase:
Например: UserController, FileController, BookService.
(2) Имена методов, имена параметров, переменные-члены и локальные переменные используют стиль lowCamelCase.
Например: getUserName(), userLogin(), getMessage();
(3) Именование констант должно быть набрано заглавными буквами, а слова должны быть разделены подчеркиванием. Постарайтесь выразить семантику полностью и ясно и не думайте, что имя слишком длинное.
Например: MAX_STOCK_COUNT/CACHE_EXPIRED_TIME.
(4) Имя абстрактного класса начинается с Abstract или Base; имя класса исключений заканчивается на Exception. Имя тестового класса начинается с имени класса, который он тестирует, и заканчивается на Test.
(5) Имена пакетов должны быть написаны строчными буквами, а между точками-разделителями должно быть только одно английское слово с естественной семантикой.Используйте имена пакетов единообразно Нечетное число форма
формула, но если имя класса имеет значение во множественном числе, имя класса может использовать форму множественного числа.
(6) Соглашение об именовании методов уровня службы/DAO:
1) Метод получения одного объекта имеет префикс get.
2) Методы получения нескольких объектов начинаются со списка и заканчиваются множественным числом, например: listObjects
3) Метод получения статистических значений имеет префикс count.
4) Метод вставки имеет префикс save/insert.
5) Метод удаления начинается с удаления/удаления.
6) Модифицированный метод имеет префикс update.
(7) Соглашение об именовании доменной модели:
1) Объект данных: xxxDO, xxx — имя таблицы данных.
2) Объект передачи данных: xxxDTO, xxx — имя, связанное с бизнес-сферой.
3) Объект отображения: xxxVO, xxx обычно представляет собой имя веб-страницы.
(8) Между всеми объектами класса целочисленной упаковки Сравнение значений , все используют метод равенства для сравнения.
проиллюстрировать: Для целого числа var = ? от -128 до 127 Присваивание между целочисленными объектами генерируется в IntegerCache.cache, и существующие объекты будут повторно использоваться. Целочисленные значения в этом диапазоне можно напрямую оценить с помощью ==, но все данные за пределами этого диапазона будут сгенерированы в куче.
Использование существующих объектов — большая ошибка. Для оценки рекомендуется использовать метод равенства.
(9) Чтобы оценить эквивалентность чисел с плавающей запятой, базовые типы данных нельзя сравнивать с помощью ==, а обернутые типы данных нельзя оценивать с помощью равенства. При сравнении равенства BigDecimal следует использовать метод CompareTo() вместо метода Equals().
Положительный пример:
(1) Укажите диапазон ошибок. Если разница между двумя числами с плавающей запятой находится в этом диапазоне, они считаются равными.
плавать а = 1.0Ф - 0,9Ф ;
плавать б = 0,9Ф - 0,8Ф ;
плавать разница = 1е-6Ф ;
если ( Математика . абс ( а - б ) < разница ) {
Система . вне . println ( "истинный" );
}
(2) Используйте BigDecimal для определения значения, а затем выполните операции с числами с плавающей запятой.
BigDecimal а = новый BigDecimal ( "1.0" );
BigDecimal б = новый BigDecimal ( "0.9" );
BigDecimal c = новый BigDecimal ( "0.8" );
BigDecimal x = а . вычитать ( б );
BigDecimal y = б . вычитать ( с );
если ( Икс . по сравнению с ( у ) == 0) {
Система . вне . println ( "истинный" );
}
тип идентификатораПравила именованияпример
Пакеты Префикс уникального имени пакета всегда состоит из строчных букв ASCII и представляет собой доменное имя верхнего уровня, обычно com, edu, gov, mil, net, org или английский двухсимвольный код, идентифицирующий страну, указанную в документе 1981 года. Стандарт ИСО 3166. Последующие части имени пакета различаются в зависимости от внутренних соглашений об именах различных организаций. В таких соглашениях об именах может использоваться композиция конкретных имен каталогов для различения отделов, проектов, компьютеров или имен входа.com.sun.eng
com.apple.quicktime.v2
edu.cmu.cs.bovik.cheese
Классы Правила именования: Имя класса представляет собой существительное, написанное в смешанном регистре, с заглавной буквой каждого слова. Старайтесь, чтобы имена классов были краткими и информативными. Используйте полные слова, избегайте сокращений (если только аббревиатура не используется более широко, например URL, HTML).класс Растр;
класс ImageSprite;
ИнтерфейсыПравила именования: правила регистра аналогичны именам классов.интерфейс RasterDelegate;
Интерфейс Хранение;
Методы Имя метода представляет собой глагол в смешанном регистре, в котором первая буква первого слова строчная, а первая буква последующих слов — прописная.Верблюжий случай именованиябегать();
беги быстро();
получитьФон();
Переменные За исключением имен переменных, все экземпляры, включая классы и константы классов, написаны в смешанном регистре: первая буква первого слова — строчная, а первая буква последующих слов — прописная. Имена переменных не должны начинаться со знака подчеркивания или доллара, хотя синтаксически это разрешено.
Имена переменных должны быть короткими и описательными. Имена переменных следует выбирать так, чтобы их было легко запомнить, то есть чтобы они указывали на их назначение.

Список<User> Списокпользователей;

Строка Имя пользователя;

Константы Объявления констант класса и констант ANSI должны быть написаны заглавными буквами, а слова разделяться подчеркиванием. (Старайтесь избегать констант ANSI, которые могут легко вызвать ошибки)статическое конечное целое MIN_WIDTH = 4;
статическое конечное целое MAX_WIDTH = 999;
статическое конечное целое GET_THE_CPU = 1;

(4) Технические характеристики внешнего и внутреннего интерфейса:

(1) Метод запроса: определение конкретных операций. Общие методы запроса следующие:
а) ПОЛУЧИТЬ: получить ресурсы с сервера. (можно рассматривать как операцию выбора)
б) POST: создайте новый ресурс на сервере. (можно рассматривать как операцию вставки)
в) PUT: обновить ресурсы на сервере. (можно рассматривать как операцию обновления)
г) УДАЛЕНИЕ: удалить ресурсы с сервера. (можно рассматривать как операцию удаления)
(2) Запрошенная информация о возврате:
  • code: код состояния http
    • Если есть дополнительные ошибки, которые вы определяете самостоятельно, вы также можете рассмотреть возможность использования собственных кодов ошибок.
  • message: Соответствующая текстовая информация.
    • В случае возникновения ошибки отображается конкретная информация об ошибке.
    • В противном случае операция завершается успешно, и обычно упрощенная обработка возвращает OK.
  • data
    • строка json, соответствующая данным
      • в случаемножество, то соответствующий внешний слой[]изlist
      • в случаеобъект, то соответствующий внешний слой{}изdict
  1. {
  2. "code": 200,
  3. "message": "new user has created",
  4. "data": {
  5. "id": "user-4d51faba-97ff-4adf-b256-40d7c9c68103",
  6. "firstName": "crifan",
  7. "lastName": "Li",
  8. "password": "654321",
  9. "phone": "13511112222",
  10. "createdAt": "2016-10-24T20:39:46",
  11. "updatedAt": "2016-10-24T20:39:46"
  12. ......
  13. }
  14. }

(3) Код состояния ответа

Ошибка:

  • 1xx (код информационного статуса): Указывает, что полученный запрос обрабатывается.
  • 2xx (код статуса успеха) : указывает, что запрос обработан нормально. 200 означает, что запрос возвращен успешно.
  • 3xx (код статуса перенаправления): Для выполнения этого запроса необходимы последующие действия.
  • 4xx (код состояния ошибки клиента) : указывает, что запрос содержит синтаксическую ошибку или не может быть выполнен. 400, 404, 401, 403 — это все ошибки, вызванные интерфейсом при отправке запросов. Интерфейсу необходимо сначала проверить проблему, иначе может возникнуть ошибка в записи серверной части.
  • 5xx (код состояния ошибки сервера) : Произошла ошибка во время обработки сервером запроса. Проблемы с серверной частью, могут быть выданы исключения, ошибки сервера и т. д.

2XX успех


200 ок (запрос успешен)
204 нет контента (запрос прошел успешно, но результат не возвращен)
206 частичное содержимое (клиент запрашивает часть ресурса, сервер успешно отвечает и возвращает диапазон ресурсов)


перенаправление 3XX


301 переехать навсегда (постоянное перенаправление)
Найдено 302 (временное перенаправление)
303 см. другое (указывает, что, поскольку для ресурса, соответствующего запросу, существует другой URI, следует использовать GET
Метод, направленный на получение запрошенного ресурса)
304 не изменено (указывает, что когда клиент использует условный доступ к ресурсу, сервер находит ресурс, но условия запроса не соответствуют условиям. К перенаправлению это не имеет никакого отношения)
307 временный редирект (то же значение, что и 302)


Ошибка клиента 4XX


400 плохой запрос (в сообщении запроса имеется синтаксическая ошибка)
401 не авторизован (требуется аутентификация (первый возврат) или аутентификация не удалась (второй возврат))
403 запрещено (запрос отклонен сервером)
404 не найден (запрошенный ресурс не найден на сервере)


Ошибка сервера 5XX


500 внутренняя ошибка сервера (ошибка произошла при выполнении сервером запроса)
503 служба недоступна (сервер перегружен или отключен на техническое обслуживание и не может обработать запрос)

(5) Другие характеристики:

(1) Когда HTTP-запрос передает контент через тело, необходимо контролировать длину. После превышения максимальной длины при внутреннем анализе произойдет ошибка.
проиллюстрировать: Ограничение по умолчанию для nginx составляет 1 МБ, а ограничение по умолчанию для tomcat — 2 МБ. Если существует деловая необходимость передать более крупный контент, вы можете увеличить лимит на стороне сервера.
(2) Не используйте return в блокахfinally
проиллюстрировать: После успешного выполнения оператора return в блоке try он не возвращается немедленно, а продолжает выполнять оператор в блокеfinally. Если здесь есть оператор return, он возвращается прямо сюда, безжалостно отбрасывая точку возврата в блоке. попробуй заблокировать.
(3) В бизнес-сценариях После выдачи исключения и быть пойманным Если вам нужно откатиться назад Обязательно откатите транзакции вручную.
(4) Вы можете использовать журналы для записи информации, Используйте структуру журналирования (SLF4J、 JCL — лесозаготовки в Джакарте (Jakarta Commons) API в.

3. Использование Апифокс:

(1) Загрузка и установка:

Ссылка: щелкните ссылку, чтобы загрузить apifox напрямую (просто загрузите последнюю версию). Apifox — интегрированная платформа для совместной работы над документацией API, отладкой, макетированием и тестированием. Он имеет такие функции, как управление документацией интерфейса, отладка интерфейса, макетирование и автоматическое тестирование, а эффективность разработки интерфейса, тестирования и совместной отладки увеличивается в 10 раз. Лучший инструмент управления документами интерфейса и инструмент автоматизации тестирования интерфейса.значок-по умолчанию.png?t=N7T8https://apifox.com/

(2) Создайте новый проект и пригласите своих товарищей по команде:

1. Создайте свою команду и создайте новый проект:

Пригласите своих товарищей по команде

2. Создайте новый интерфейс и создайте новую модель данных:

(1) Определите, что это за запрос (POST, GET, PUT, DELETE):

(2) Тестовая среда должна быть единой, а URL-адреса в разных средах различаются:

(3) Параметры запроса настроены:

Какие параметры настроены? Предоставьте примеры параметров, названия на китайском языке и описания параметров.

(4) Ответ должен быть настроен:

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

  1. {
  2. "code": 200,
  3. "message": "登入成功",
  4. "data": {
  5. "user_id": 27,
  6. "user_name": "孟霞",
  7. "user_password": "123456",
  8. "user_age": "15",
  9. "user_photo": "http://dummyimage.com/400x400",
  10. "user_last_time": "1996-12-11 09:03:49",
  11. "user_indentity": "messager",
  12. "user_birthday": "2024-02-23"
  13. }
  14. }

(5) Модель данных может быть создана:

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

(3) Написание спецификаций для интерфейсных документов.

Характеристики написания и особенности апифокса.

Краткое руководство по Apifox | Справочная документация Apifoxзначок-по умолчанию.png?t=N7T8https://apifox.com/help/

(1) В начале документа интерфейса API должно быть введение. Этот раздел может включать в себя следующее:

  • Имя и номер версии интерфейса API
  • Функция и назначение интерфейса API
  • Цели проектирования и принципы API-интерфейсов
  • Применимый объем и ограничения интерфейса API

Цель этой части — дать читателям понять основную ситуацию и справочную информацию об интерфейсе API.

(2) Список интерфейсов

Далее в документе интерфейса API нам нужно перечислить все интерфейсы. Каждый интерфейс должен содержать следующую информацию:

  • Имя и описание интерфейса
  • Метод запроса (GET, POST, PUT, DELETE и т. д.)
  • Путь запроса (URL)
  • Параметры запроса (включая параметры запроса и параметры тела)
  • Пример запроса (полный пример, который может включать заголовки и тело запроса)
  • Код состояния ответа и описание
  • Параметры ответа (включая параметры заголовка и параметры тела)
  • Пример ответа (полный пример, который может включать заголовки и тело ответа)

Цель этого раздела — дать читателям возможность быстро понять основную информацию о каждом интерфейсе и правильно использовать интерфейсы на основе примеров в документе.

(3) Описание параметров запроса и параметров ответа.

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

  • Имя и описание параметра
  • Типы и форматы параметров
  • Требуется ли это и значение по умолчанию
  • Пример параметра

Для типов и форматов параметров вы можете использовать стандартные типы и форматы данных или определить свои собственные типы и форматы данных в соответствии с конкретными обстоятельствами. Необходимость определения обязательных значений и значений по умолчанию должна определяться исходя из реальной ситуации.

(4) Описание кода ошибки

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

  • Код ошибки и описание
  • Типы ошибок и причины
  • Пример кода ошибки, возвращаемого интерфейсом

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

4. Функция отладки (необходимо знать серверную часть)

Научите отлаживать Java за 2 минуты [Java в IDEA]_Как отлаживать Java-проекты без кейсов — блог CSDNзначок-по умолчанию.png?t=N7T8https://blog.csdn.net/qq_43436117/article/details/113859737

5. Категория теста

(1) Конкретные операции:

Определить тестовый класс

предположение:

Имя тестового класса: Имя тестируемого класса Test CalculatorTest
Имя пакета: xx.xx.xx.test cn.itcast.test
Определить методы тестирования: можно запускать независимо

предположение:

Имя метода: имя тестового метода testAdd()
Возвращаемое значение: недействительно
Список параметров: пустые параметры
Добавьте @Test в метод

Импортировать среду зависимостей Junit

результат решения:

Красный: не удалось
зеленый: успех
Обычно мы используем статический метод AssertEquals(ожидаемый, фактический) в классе Assert для обработки ожидаемых результатов и результатов вывода.

Утверждать.assertEquals(3, результат);

Двумя параметрами являются: ожидаемое значение, значение результата программы.

Зачем использовать Assert.assertEquals(ожидаемое, фактическое) для обработки результатов теста?

Потому что мы оговариваем, что красный цвет означает неудачу, а зеленый — правильность. Когда мы используем метод тестирования для проверки метода сложения компьютера, мы выводим только этот результат (при условии, что исключений не возникает). Если мы введем 1 и 3, мы ожидаем получить результат 4, но на выходе мы получим 2, а ожидаемый результат — 4. Результат, полученный в этот момент, не соответствует нашим ожиданиям, но текущий результат все еще зеленый. (представляет правильно). Разве это не правильно? В настоящее время мы можем использовать метод AssertEquals в конце, чтобы сравнить ожидаемое значение и значение результата, выдаваемое программой. Если они равны, оно будет зеленым и. если они не равны, он будет красным. Соответствует ли это время нашему определению зеленого и красного?

  1. package cn.itcast.test;
  2. import cn.itcast.junit.Calculator;
  3. import org.junit.Assert;
  4. import org.junit.Test;
  5. public class CalculatorTest {
  6. /**
  7. * 测试add方法
  8. */
  9. @Test
  10. public void testAdd(){
  11. Calculator c = new Calculator();
  12. int a = 1, b = 2;
  13. int result = c.add(1, 2);
  14. Assert.assertEquals(3, result);
  15. }
  16. /**
  17. * 测试sub方法
  18. */
  19. @Test
  20. public void testSub(){
  21. Calculator c = new Calculator();
  22. int a = 1, b = 2;
  23. int result = c.sub(1, 2);
  24. Assert.assertEquals(-1, 2);
  25. }
  26. }

@До
Добавьте @Before перед методом тестирования, и он станет методом инициализации. Этот метод будет автоматически выполняться перед выполнением всех методов тестирования. Обычно он используется для приложения ресурсов.

@После
Добавьте @After перед методом тестирования, и он станет методом освобождения ресурсов, который будет автоматически выполняться после выполнения всех методов тестирования.

Метод, украшенный @Before, будет выполнен до выполнения тестового метода.

Метод, украшенный @After, будет выполнен после выполнения тестового метода.

Методы, измененные с помощью @Before или @After, будут выполняться независимо от того, используется ли тестовый метод.

(2) Автоматическое создание плагинов тестового класса.

Рекомендуемые плагины для автоматического создания модульных тестов для проектов Java — Сообщество разработчиков Tencent Cloud — Tencent Cloud (tencent.com)значок-по умолчанию.png?t=N7T8https://cloud.tencent.com/developer/article/1910893

6. На что следует обратить внимание:

(1) При написании документа интерфейса на внутренней стороне он должен быть написан четко и ясно, чтобы ваш интерфейс мог его понять. Он должен быть написан стандартизированным образом. Не пишите его так, чтобы вы могли понять его самостоятельно. Переписанное имя и ответ интерфейса значения по умолчанию должны быть написаны правильно.

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

(3) Написание кода также должно быть стандартизировано, а логика должна быть строгой; настройки (файлы cookie, сеансы) там, где необходимы пустые суждения, должны быть сделаны пустыми суждениями, а там, где можно повысить безопасность, вы можете извлечь из этого уроки.

(4) Фронтенд и бэкэнд должны хорошо взаимодействовать. Не позволяйте бэкэнду просто делать свое дело, не сказав ни слова фронтенду. Интерактивный ответ внешнего и внутреннего интерфейса также является частью оценки, на которую приходится большая часть. Интерфейс, который вы написали, не может быть запущен только через apifox. Есть ли какие-либо ошибки при представлении на конкретной странице внешнего интерфейса. ? Есть ли какие-либо логические проблемы и т. д. Возможно, стоит подумать.

(Один человек не может управлять страной!!!)

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

Вы можете сравнивать проекты, которые действительно работают, или что-то подобное, например, торговый веб-сайт. Затем вам следует сравнить с Taobao внутренние интерфейсы этого веб-сайта, функциональные модули, которые он может иметь, и конкретные детали.

(6) Не стремитесь слепо к большему, будьте логичны и разумны и научитесь упрощать те части, которые можно упростить. Но базовое количество интерфейсов и объем кода также должны быть гарантированы. (Изначально написанные нами интерфейсы насчитывали более 40)