Compartilhamento de tecnologia

Introdução às especificações de projeto/código e Apifox

2024-07-12

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

Índice

Índice

1. Especificações do projeto:

(1) Estrutura do projeto:

(2) Objeto de dados transmitido

2. Especificações do código:

(1) Convenção de nomenclatura de banco de dados:

(2) Especificações de anotação:

(3) Especificações de nomenclatura:

(4) Especificações de front-end e back-end:

(5) Outras especificações:

3. Uso do Apifox:

(1) Download e instalação:

(2) Crie um novo projeto e convide seus colegas de equipe:

(3) Escrevendo especificações para documentos de interface

4. Função de depuração (deve conhecer o backend)

5. Categoria de teste

6. Coisas a serem observadas:

(Uma pessoa não pode dominar o país!!!)


1. Especificações do projeto:

(1) Estrutura do projeto:

Os específicos são:

(1) Camada de entidade: A camada de entidade armazena entidades de objetos específicos, correspondentes aos objetos no banco de dados.

(2) Camada DAO: (pode ser subdividida em duas camadas (camada de interface do dao e camada de implementação do dao)) é a camada que interage com o banco de dados, envolvendo algumas operações de adição, exclusão, modificação e consulta do banco de dados.

(3) Camada de serviço (pode ser subdividida em duas camadas (camada de interface de serviço e camada de implementação de serviço)): principal responsável pelo design lógico da aplicação dos módulos de negócios.

(4) Camada Controladora: A camada Controladora é responsável pelo controle de processos específicos do módulo de negócios. A camada controladora é responsável pela interação front-end e back-end, aceitando solicitações front-end, chamando a camada de serviço, recebendo dados retornados por. a camada de serviço e, finalmente, retornando páginas e dados específicos ao cliente.

(5) Camada util: A camada de ferramentas coloca classes de ferramentas comumente usadas. Por exemplo, alguns métodos comuns podem ser escritos como uma função util e, então, o código geral pode ser simplificado.

(6) Camada de exceção: você pode escrever uma camada de exceção de retorno unificada.

(7) Camada de filtro: Camada de filtro, como filtragem uniforme de autenticação de identidade. Se o filtro não passar, ele estará apenas no modo convidado.

(2) Objeto de dados transmitido

DTO é a estrutura de dados enviada pela solicitação de front-end.

VO é a resposta retornada pelo backend em resposta à solicitação enviada pelo frontend.

PO é a correspondência real entre a entidade do objeto e a tabela de objetos do banco de dados.

BO é a entidade objeto no processo de processamento de negócios.

2. Especificações do código:

Por favor, nomeie-o em inglês, não em pinyin chinês.

Seja fácil de entender, não sofisticado.

Use nomes de corcunda em vez de nomes comuns.

Use quebras de linha em intervalos e não escreva parágrafos longos.

Seja anotado, não individualista.

Especificação de codificação da linguagem Java - Especificação de codificação da linguagem Java (versão chinesa) - Documentação online - Materiais de programação JAVA Estação Niubi (javanb.com)ícone-default.png?t=N7T8http://doc.javanb.com/convencoes-de-codigo-para-a-linguagem-de-programacao-java-zh/index.html#312

Não use palavras-chave, palavras reservadas, etc. que tenham significados especiais no próprio Java! ! !

(1) Convenção de nomenclatura de banco de dados:

(1) O nome da tabela é exclusivo e vários nomes de tabelas não podem usar o mesmo nome.

(2) O nome da tabela deve ser uma combinação de letras minúsculas e sublinhados. Tente evitar o uso de letras maiúsculas ou caracteres especiais. Use "user_info" assim, ou "tbl_user" ou "tbl_user_info".

(3) Não entre em conflito com palavras-chave,Para desabilitar palavras reservadas, como like, desc, range, match, delay, etc., consulte as palavras reservadas oficiais do MySQL.

(4) Nome do campo do banco de dados: consiste em 26 letras inglesas (diferenciando maiúsculas de minúsculas) mais o sublinhado '_', como "user_id", "user_name", "user_password", "user_register_time", "user_login_time".

(5) Especificações de chave primária e estrangeira:

O nome do índice da chave primária é pk_field name; o nome do índice exclusivo é uk_field name;
ilustrar: pk_ é a chave primária; uk_ é a chave única; idx_ é a abreviatura de index.

Chave primária: pk_+nome da tabela
Por exemplo:pk_main
Chave estrangeira: fk_+nome da tabela escrava+_+nome da tabela principal
Por exemplo:fk_sub_main

(6) O tipo decimal é decimal e float e double são proibidos.
(7) Três campos necessários para a tabela: id, create_time, update_time.

(2) Especificações de anotação:

(1) Anotação de classe:

As anotações de classe (Class) são usadas principalmente para declarar para que a classe é usada, bem como algumas informações como o criador, a data de criação, a versão, o nome do pacote, etc.:

/**
* @versão: V1.0
* @autor: fendo
* @className: usuário
* @packageName: usuário
* @description: Esta é a classe do usuário
* @data: 2024-07-01 12:20
 **/

(2) Anotação do método (Construtor):

Para comentários de linha única dentro do método, inicie uma nova linha acima da instrução comentada e use // comment. Use /* */ para comentários de múltiplas linhas dentro de métodos
Os comentários devem estar alinhados com o código. Todos os métodos abstratos (incluindo métodos em interfaces) devem ser anotados com Javadoc. Além dos valores de retorno e descrições de exceções de parâmetros, eles também devem indicar o que o método faz e quais funções ele implementa.Anotações de método (Construtor) também podem ser utilizadas para declarar parâmetros, retornos e outras informações da classe:

/**
* @autor: fendo
* @methodsName: adicionarUsuário
* @descrição: Adicione um usuário
* @param: xxxx
* @return: Cadeia de caracteres
* @lança:
*/

(3) Comentários do bloco de código: explique o propósito de uma determinada parte do seu código

/**
* Instanciar um usuário
* xxxxxxx
 */
Usuário user=new User();

(4) Comentários de frase única: comente seu código individual

User user=new User(); //Instancia um usuário

(3) Especificações de nomenclatura:

Nomeie-o para que outras pessoas possam entendê-lo, nomeie-o em caixa de camelo e faça distinção entre maiúsculas e minúsculas.

(1) O nome da classe usa o estilo UpperCamelCase:
Por exemplo: UserController, FileController, BookService
(2) Nomes de métodos, nomes de parâmetros, variáveis ​​de membro e variáveis ​​locais usam o estilo lowerCamelCase.
Por exemplo: getUserName(), userLogin(), getMessage();
(3) A nomenclatura constante deve estar em letras maiúsculas e as palavras devem ser separadas por sublinhados. Tente expressar a semântica de forma completa e clara e não pense que o nome é muito longo.
Por exemplo: MAX_STOCK_COUNT/CACHE_EXPIRED_TIME
(4) O nome da classe abstrata começa com Abstract ou Base; o nome da classe de exceção termina com Exception. O nome da classe de teste começa com o nome da classe que deve ser testada e termina com Test.
(5) Os nomes dos pacotes devem ser uniformemente minúsculos e deve haver apenas uma palavra em inglês com semântica natural entre separadores de pontos.Use nomes de pacotes uniformemente Número ímpar forma
fórmula, mas se o nome da classe tiver um significado plural, o nome da classe poderá usar a forma plural.
(6) Convenção de nomenclatura de métodos da camada Serviço/DAO:
1) O método para obter um único objeto é prefixado com get.
2) Os métodos para obter vários objetos são prefixados com lista e terminam com plural, como: listObjects
3) O método de obtenção de valores estatísticos é prefixado com contagem.
4) O método de inserção é prefixado com salvar/inserir.
5) O método de exclusão é prefixado com remover/excluir.
6) O método modificado é prefixado com atualização.
(7) Convenção de nomenclatura de modelo de domínio:
1) Objeto de dados: xxxDO, xxx é o nome da tabela de dados.
2) Objeto de transferência de dados: xxxDTO, xxx é o nome relacionado à área de negócio.
3) Objeto de exibição: xxxVO, xxx geralmente é o nome da página da web.
(8) Entre todos os objetos de classe de empacotamento inteiro Comparação de valores , todos usam o método equals para comparar.
ilustrar: Para número inteiro var = ? -128 a 127 A atribuição entre objetos inteiros é gerada em IntegerCache.cache e os objetos existentes serão reutilizados. Os valores inteiros neste intervalo podem ser avaliados diretamente usando ==, mas todos os dados fora deste intervalo serão gerados no heap.
Usar objetos existentes é uma grande armadilha. Recomenda-se usar o método equals para julgamento.
(9) Para julgar a equivalência entre números de ponto flutuante, os tipos de dados básicos não podem ser comparados usando ==, e os tipos de dados agrupados não podem ser julgados usando iguais. A comparação de igualdade BigDecimal deve usar o método compareTo() em vez do método equals()
Exemplo positivo:
(1) Especifique um intervalo de erro. Se a diferença entre dois números de ponto flutuante estiver dentro desse intervalo, eles serão considerados iguais.
flutuador a = 1,0 °F - 0,9 °F ;
flutuador b = 0,9 °F - 0,8 °F ;
flutuador diferente = 1e-6F ;
se ( Matemática . abdômen ( a - b ) < diferente ) {
Sistema . fora . imprimir ( "verdadeiro" );
}
(2) Use BigDecimal para definir o valor e, em seguida, execute operações com números de ponto flutuante.
BigDecimal a = novo GrandeDecimal ( "1.0" );
BigDecimal b = novo GrandeDecimal ( "0.9" );
GrandeDecimal c = novo GrandeDecimal ( "0.8" );
GrandeDecimal x = a . subtrair ( b );
BigDecimal y = b . subtrair ( c );
se ( x . comparado a ( e ) == 0) {
Sistema . fora . imprimir ( "verdadeiro" );
}
tipo de identificadorRegras de nomenclaturaexemplo
Pacotes O prefixo de um nome de pacote exclusivo é sempre composto por letras ASCII minúsculas e é um nome de domínio de nível superior, geralmente com, edu, gov, mil, net, org ou o código inglês de dois caracteres que identifica o país especificado pela 1981 Padrão ISO 3166. As partes subsequentes do nome do pacote variam de acordo com as convenções de nomenclatura internas de diferentes organizações. Essas convenções de nomenclatura podem usar a composição de nomes de diretórios específicos para distinguir departamentos, projetos, máquinas ou nomes de login.com.sun.eng
com.apple.quicktime.v2
edu.cmu.cs.bovik.queijo
Aulas Regras de nomenclatura: O nome da classe é um substantivo, usando maiúsculas e minúsculas, com a primeira letra de cada palavra em maiúscula. Tente manter os nomes das aulas concisos e descritivos. Use palavras completas, evite abreviações (a menos que a abreviatura seja mais amplamente usada, como URL, HTML)classe Raster;
classe ImageSprite;
InterfacesRegras de nomenclatura: as regras de caso são semelhantes aos nomes de classesinterface RasterDelegate;
interface de armazenamento;
Métodos O nome do método é um verbo, em maiúsculas e minúsculas, com a primeira letra da primeira palavra em minúscula e a primeira letra das palavras subsequentes em maiúscula.Nomeação de caixa de camelocorrer();
corra rápido();
obterFundo();
Variáveis Exceto para nomes de variáveis, todas as instâncias, incluindo classes e constantes de classe, estão em letras maiúsculas e minúsculas, com a primeira letra da primeira palavra sendo minúscula e a primeira letra das palavras subsequentes sendo maiúscula. Os nomes das variáveis ​​não devem começar com sublinhado ou cifrão, embora isso seja sintaticamente permitido.
Os nomes das variáveis ​​devem ser curtos e descritivos. Os nomes das variáveis ​​devem ser escolhidos de forma que sejam fáceis de lembrar, ou seja, que indiquem sua finalidade.

Lista<User> Lista de usuários;

String nome_do_usuário;

Constantes As declarações de constantes de classe e constantes ANSI devem estar em letras maiúsculas, com palavras separadas por sublinhados. (Tente evitar constantes ANSI, que podem facilmente causar erros)estático final int MIN_WIDTH = 4;
estático final int MAX_WIDTH = 999;
estático final int GET_THE_CPU = 1;

(4) Especificações de front-end e back-end:

(1) Método de solicitação: A definição de métodos de solicitação comuns é a seguinte:
a) GET: Obtenha recursos do servidor. (pode ser visto como uma operação de seleção)
b) POST: Crie um novo recurso no servidor. (pode ser considerado como operação de inserção)
c) PUT: Atualiza recursos no servidor. (pode ser visto como uma operação de atualização)
d) DELETE: Exclui recursos do servidor. (pode ser considerado como operação de exclusão)
(2)Informações de devolução solicitadas:
  • code:código de status http
    • Se houver erros adicionais definidos por você mesmo, você também pode considerar usar seus próprios códigos de erro.
  • message: Informações de descrição de texto correspondentes
    • Se ocorrer um erro, informações específicas sobre o erro serão exibidas.
    • Caso contrário, a operação será bem-sucedida e o processamento geralmente simplificado retornará OK.
  • data
    • string json correspondente aos dados
      • no caso devariedade, então a camada mais externa correspondente é[]delist
      • no caso deobjeto, então a camada mais externa correspondente é{}dedict
  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) Código de status de resposta

Erro:

  • 1xx (código de status informativo): indica que a solicitação recebida está sendo processada.
  • 2xx (código de status de sucesso) : indica que a solicitação foi processada normalmente. 200 significa que a solicitação foi retornada com sucesso.
  • 3xx (código de status de redirecionamento): É necessária uma ação de acompanhamento para concluir esta solicitação.
  • 4xx (código de status de erro do cliente) : indica que a solicitação contém um erro de sintaxe ou não pode ser concluída. 400, 404, 401, 403 são todos erros causados ​​pelo front-end ao enviar solicitações. O front-end precisa verificar o problema primeiro, ou pode haver um erro na gravação do back-end.
  • 5xx (código de status de erro do servidor) : ocorreu um erro enquanto o servidor processava a solicitação. Problemas de back-end, exceções podem ser lançadas, erros de servidor, etc.

Sucesso 2XX


200 ok (solicitação bem-sucedida)
204 nenhum conteúdo (a solicitação foi bem-sucedida, mas nenhum resultado foi retornado)
206 conteúdo parcial (o cliente solicita uma parte do recurso, o servidor responde com sucesso e retorna uma gama de recursos)


Redirecionamento 3XX


301 mover permanentemente (redirecionamento permanente)
302 encontrado (redirecionamento temporário)
303 veja outro (indica que por existir outra URI para o recurso correspondente à requisição, deverá ser utilizado GET
Método direcionado para obter o recurso solicitado)
304 não modificado (indica que quando o cliente usa acesso condicional a um recurso, o servidor encontra o recurso, mas as condições da solicitação não atendem às condições. Não tem nada a ver com redirecionamento)
Redirecionamento temporário 307 (mesmo significado de 302)


Erro do cliente 4XX


400 solicitação incorreta (há um erro de sintaxe na mensagem de solicitação)
401 não autorizado (requer autenticação (primeiro retorno) ou falha na autenticação (segundo retorno))
403 proibido (a solicitação foi rejeitada pelo servidor)
404 não encontrado (o recurso solicitado não pode ser encontrado no servidor)


Erro de servidor 5XX


500 erro interno do servidor (ocorreu um erro quando o servidor executou a solicitação)
503 serviço indisponível (o servidor está sobrecarregado ou inoperante para manutenção e não consegue atender à solicitação)

(5) Outras especificações:

(1) Quando uma solicitação HTTP transmite conteúdo através do corpo, o comprimento deve ser controlado. Após o comprimento máximo ser excedido, ocorrerá um erro na análise de back-end.
ilustrar: O limite padrão do nginx é de 1 MB e o limite padrão do tomcat é de 2 MB. Quando houver necessidade comercial de transferir conteúdo maior, você poderá aumentar o limite do lado do servidor.
(2) Não use return em blocos finalmente
ilustrar: Depois que a instrução return no bloco try for executada com sucesso, ela não retornará imediatamente, mas continuará a executar a instrução no bloco finalmente. Se houver uma instrução return aqui, ela retornará diretamente aqui, descartando impiedosamente o ponto de retorno no bloco. tente bloquear.
(3) Em cenários de negócios Depois de lançar uma exceção e ser pego Se você precisar reverter Certifique-se de reverter as transações manualmente.
(4) Você pode usar logs para registrar informações, Use a estrutura de registro (SLF4J、) JCL—Jakarta Commons Logging) API em.

3. Uso do Apifox:

(1) Download e instalação:

Link: Clique no link para baixar o apifox diretamente (basta baixar a versão mais recente). Apifox – uma plataforma de colaboração integrada para documentação, depuração, simulação e testes de API. Possui funções como gerenciamento de documentos de interface, depuração de interface, simulação e testes automatizados, e a eficiência do desenvolvimento, teste e depuração conjunta de interface é aumentada em 10 vezes. A melhor ferramenta de gerenciamento de documentos de interface e ferramenta de teste de automação de interface.ícone-default.png?t=N7T8https://apifox.com/

(2) Crie um novo projeto e convide seus colegas de equipe:

1. Crie sua equipe e crie um novo projeto:

Convide seus companheiros de equipe

2. Crie uma nova interface e um novo modelo de dados:

(1) Determine qual é a solicitação (POST, GET, PUT, DELETE):

(2) O ambiente de teste deve ser unificado e os URLs em diferentes ambientes são diferentes:

(3) Os parâmetros de solicitação são configurados:

Quais parâmetros estão configurados? Forneça exemplos de parâmetros, nomes chineses e descrições de parâmetros.

(4) A resposta deve ser configurada:

Por exemplo, é necessário especificar que tipo de informação é retornada em diferentes estados, e deve haver exemplos de sucesso e exemplos de exceção (para conveniência do front end).

  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) O modelo de dados pode ser criado:

Você pode criar vários modelos de dados, o que é muito conveniente para retornar campos de resposta e também para o front-end visualizar seus campos de dados.

(3) Escrevendo especificações para documentos de interface

As especificações de escrita e detalhes específicos do apifox.

Início rápido do Apifox | Documentação de ajuda do Apifoxícone-default.png?t=N7T8https://apifox.com/help/

(1) Deve haver uma introdução no início do documento de interface da API. Esta seção pode incluir o seguinte:

  • O nome e o número da versão da interface API
  • Função e finalidade da interface API
  • Finalidades de design e princípios de interfaces API
  • Escopo aplicável e limitações da interface API

O objetivo desta parte é permitir que os leitores entendam a situação básica e as informações básicas da interface da API.

(2) Lista de interfaces

A seguir, no documento de interface da API, precisamos listar todas as interfaces. Cada interface deve conter as seguintes informações:

  • Nome e descrição da interface
  • Método de solicitação (GET, POST, PUT, DELETE, etc.)
  • Caminho da solicitação (URL)
  • Parâmetros de solicitação (incluindo parâmetros de consulta e parâmetros de corpo)
  • Exemplo de solicitação (exemplo completo que pode incluir cabeçalhos e corpo da solicitação)
  • Código de status de resposta e descrição
  • Parâmetros de resposta (incluindo parâmetros de cabeçalho e parâmetros de corpo)
  • Exemplo de resposta (exemplo completo que pode incluir cabeçalhos de resposta e corpo de resposta)

O objetivo desta seção é permitir que os leitores entendam rapidamente as informações básicas de cada interface e utilizem as interfaces corretamente com base nos exemplos do documento.

(3) Descrição dos parâmetros de solicitação e parâmetros de resposta

Após a lista de interfaces, precisamos detalhar os parâmetros de solicitação e de resposta de cada interface. Esta seção deve incluir as seguintes informações:

  • Nome e descrição do parâmetro
  • Tipos e formatos de parâmetros
  • Se é obrigatório e valor padrão
  • Exemplo de parâmetro

Para tipos e formatos de parâmetros, você pode usar tipos e formatos de dados padrão ou definir seus próprios tipos e formatos de dados de acordo com circunstâncias específicas. Se os valores obrigatórios e padrão precisam ser determinados com base na situação real.

(4) Descrição do código de erro

Ao usar a interface API, às vezes ocorre um erro. Nesse caso, um código de erro precisa ser retornado para explicar o tipo e a causa do erro. Portanto, na documentação da interface API, precisamos especificar todos os códigos de erro possíveis. Esta seção deve incluir as seguintes informações:

  • Código e descrição do erro
  • Tipos e causas de erros
  • Exemplo de código de erro retornado pela interface

O objetivo desta seção é que o leitor entenda todos os possíveis tipos e causas de erros e seja capaz de lidar com os erros corretamente com base nos exemplos da documentação.

4. Função de depuração (deve conhecer o backend)

Ensine como depurar em Java em 2 minutos [Java in IDEA]_Como depurar em projetos Java sem casos - CSDN blogícone-default.png?t=N7T8https://blog.csdn.net/qq_43436117/article/details/113859737

5. Categoria de teste

(1) Operações específicas:

Definir uma classe de teste

sugestão:

Nome da classe de teste: Nome da classe testada Test CalculatorTest
Nome do pacote: xx.xx.xx.test cn.itcast.test
Definir métodos de teste: podem ser executados de forma independente

sugestão:

Nome do método: nome do método de teste testAdd()
Valor de retorno: nulo
Lista de parâmetros: parâmetros vazios
Adicione @Test ao método

Importar ambiente de dependência Junit

resultado do julgamento:

Vermelho: falhou
verde: sucesso
Geralmente usamos o método estático assertEquals(expected, actual) na classe Assert para lidar com nossos resultados esperados e resultados de saída

Assert.assertEquals(3, resultado);

Os dois parâmetros são: valor esperado valor do resultado do programa

Por que usar Assert.assertEquals(expected, actual) para processar resultados de testes?

Porque estipulamos que o vermelho representa o fracasso e o verde representa o acerto. Quando usamos um método de teste para testar o método de adição de um computador, apenas produzimos este resultado (assumindo que nenhuma exceção ocorre). Se inserirmos 1 e 3, esperamos obter o resultado 4, mas o que produzimos é 2 e o que esperamos obter é 4. O resultado obtido neste momento não atende às nossas expectativas, mas o resultado em execução ainda é verde (representando correto), isso não está correto? Neste momento, podemos usar o método assertEquals do Assert no final para comparar o valor esperado e o valor do resultado gerado pelo programa. se não forem iguais, será vermelho. Este tempo atende à nossa definição de verde e vermelho?

  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. }

@Antes
Adicione @Before antes de um método de teste e ele se tornará um método de inicialização. Este método será executado automaticamente antes que todos os métodos de teste sejam executados.

@Depois
Adicione @After antes de um método de teste e ele se tornará um método de liberação de recursos, que será executado automaticamente após todos os métodos de teste serem executados.

O método decorado com @Before será executado antes da execução do método de teste.

O método decorado com @After será executado após a execução do método de teste.

Os métodos modificados com @Before ou @After serão executados independentemente de o método de teste ocorrer.

(2) Gerar automaticamente plug-ins de classe de teste

Plug-ins recomendados para gerar automaticamente testes de unidade para projetos Java - Tencent Cloud Developer Community - Tencent Cloud (tencent.com)ícone-default.png?t=N7T8https://cloud.tencent.com/developer/article/1910893

6. Coisas a serem observadas:

(1) Ao escrever o documento de interface no back-end, ele deve ser escrito de forma clara e clara para que seu front-end possa entendê-lo. Não deve ser escrito de forma padronizada. O nome reescrito e a resposta da interface do valor padrão devem ser bem escritos.

(2) Além do que é ensinado, você pode aprender outras coisas sozinho, como registro de verificação de e-mail, login com código de verificação, c3p0, criptografia MD5, registros de log, estilo de resultado, etc.

(3) A escrita do código também deve ser padronizada e a lógica deve ser rigorosa (cookie, sessão), onde o julgamento vazio é necessário, o julgamento vazio deve ser feito e onde a segurança pode ser aumentada, você pode aprender com isso;

(4) O front-end e o back-end devem cooperar bem. Não deixe o back-end fazer o que quer sem dizer uma palavra ao front-end. A resposta interativa do front-end e back-end também faz parte da avaliação, representando grande parte. A interface que você escreveu não pode ser executada apenas por meio do apifox. Há algum erro quando apresentado na página específica do front-end. ? Há algum problema lógico, etc. Pode ser necessário considerar.

(Uma pessoa não pode dominar o país!!!)

(5) Durante a análise de demanda, estipule as funções e interfaces que você deseja executar. Se você executou algumas funções, mas o front-end não as executou, você pode pressioná-las se as coisas que elas fizeram exigirem do seu back-end. interfaces/data , se você não escreveu, reflita com cuidado e comunique mais.

Você pode comparar com projetos que realmente funcionam ou algo semelhante, como um site de compras. Então você deve comparar com o Taobao as interfaces de back-end que este site pode ter, os módulos funcionais que ele pode ter e os detalhes específicos.

(6) Não busque mais cegamente, seja lógico e razoável e aprenda a simplificar as partes que podem ser simplificadas. Mas o número básico de interfaces e o volume de código também devem ser garantidos. (As interfaces que escrevemos originalmente tinham basicamente mais de 40)