Combate real da função de envio de informações do livro com base em Vue + montagem de dados + interface de solicitação de axios

prefácio

Revisão da seção anterior

A seção anterior explicou os preparativos antes da entrada das informações do livro, principalmente usando o formulário el do ElementUI para fazer o layout básico da interface de entrada, incluindo el-input el-select el-date-picker e upload de imagem e outros componentes. Ao mesmo tempo, após a conclusão do layout, use as regras que acompanham o el-form para verificar os dados antes do envio. Alunos que não entendem o contexto podem dar uma olhada:  Use Vue + el-form + regras para realizar a função de entrada de informações do livro

Esta seção apresenta

Esta seção já é o 13º blog prático desta coluna. Com base na seção anterior, os dados enviados foram verificados. É hora de começar a reunir os dados e, em seguida, usar axios para enviá- los. Uma vez que a submissão for bem-sucedida, grande parte das funções do projeto serão concluídas, e o próximo passo é o módulo de lista de livros.

Índice

prefácio

1. Montagem de dados

1. Conjunto de dados padrão

2. Montagem dos dados JSON do projeto Vue

2. Os pontos de função solicitados pelos axios

1. Crie um novo arquivo API

2. Mantenha e insira o URL do livro

3. Adicione um método de solicitação para inserir informações do livro

3. Envio de solicitações em componentes de negócios

1. Apresente o método de solicitação 

2. Enviar solicitação

3. Processamento dos dados retornados pela interface 

4. SetTimeout deve ser limpo manualmente

afinal


1. Montagem de dados

Já os dados enviados pela interface geral, o front end e o front end irão coordenar o uso do formato JSON, ou seja, o valor do atributo Content-Type no cabeçalho da requisição da interface é application/json.

1. Conjunto de dados padrão

Antes de usar o projeto Vue, quando enviamos os dados, precisamos montar os dados do parâmetro de entrada, ou quando estamos acostumados a usar o formulário de formulário anteriormente, o valor do nome do elemento no formulário são os dados a serem enviados. Em seguida, o assembly de dados JSON normal deve ficar assim neste caso

let params = {
            bookName: this.form.bookName,
            bookNo: this.form.bookNo,
            bookType: this.form.bookType,
            author: this.form.author,
            publisher: this.form.publisher,
            publishDate: this.form.publishDate,
            description: this.form.description,
            coverImage: this.form.coverImage,
}

2. Montagem dos dados JSON do projeto Vue

Mas no projeto Vue, além da correspondência um-para-um entre a dependência de dados e a parte DOM, você descobrirá que o formulário na dependência de dados é apenas a pré-montagem da matriz enviada, para que você possa diretamente fazem isto:

let params = this.form;

Desta forma, os dados JSON obtidos por params passam a ser os dados do formulário. Não é suficiente. Neste caso, os dados do formulário correspondem apenas aos dados enviados pela interface, o que pode ser feito facilmente desta forma. Mas no trabalho real, com certeza haverá projetos do tipo mariposa, que precisam usar o método de montagem anterior. Portanto, o primeiro método de coleta de dados também deve estar disponível.

 

2. Os pontos de função solicitados pelos axios

Os dados foram montados, e o próximo passo é enviar a requisição axios, então quais são os preparativos necessários neste projeto, vamos dar uma olhada

1. Crie um novo arquivo API

Um novo módulo chegou, então o método de instância de envio da requisição precisa criar um novo arquivo, o novo arquivo  src\api\bookManager.js 

2. Mantenha e insira o URL do livro

No arquivo  src\config\httpUrl.js , adicione a url da interface para entrada de livros, essa url é definida pela equipe do servidor e fornecida a nós, conforme mostra a figura

3. Adicione um método de solicitação para inserir informações do livro

No  arquivo src\api\bookManager.js   recém-criado, adicione o método de solicitação e o módulo subsequente de todo o gerenciamento do livro, o método de solicitação estará neste arquivo. O método de interface para upload de fotos antes é colocado em um arquivo separado porque pode ser possível no projeto Existem muitos requisitos que precisam usar upload de imagem, então upload de imagem é contado como um método público, portanto não é adicionado a este arquivo, o código é o seguinte

import request from '../utils/httpRequire.js';
import { URLS } from '../config/httpUrl.js';

// 录入图书信息
export function enterBook(data) {
    return request({
        url: URLS.createBook,
        method: 'post',
        data,
    });
}

3. Envio de solicitações em componentes de negócios

Os dados dos parâmetros de entrada estão prontos, e as peças solicitadas pelos axios estão prontas. Em seguida, é hora de retornar ao componente de negócios e realmente acionar e enviar a solicitação de entrada de informações do livro.

1. Apresente o método de solicitação 

Introduza o método de instância axios no arquivo  src\views\bookManager\Create.vue

import { enterBook } from '@/api/bookManager.js';

2. Enviar solicitação

A seção anterior disse que o botão enviar chama o método handleSubmit. Depois que os dados de verificação são passados, para evitar que o botão seja clicado repetidamente, esse método adiciona o limite de alternância de  isLoading . A configuração padrão é false. Quando os dados são enviados , é alterado para true, então o botão submit passa a ficar no estado de carregamento de envio. código mostra como abaixo:

handleSubmit() {
      this.$refs.form.validate((valid) => {
        if (valid) {
          console.log('已验证通过');
          this.isLoading = true;

          let params = this.form;

          enterBook(params).then((res) => {
            console.log(res);
            if (res.code != 200) {
              this.isLoading = false;
              this.$message.error(res.message);
              return;
            }

            this.isLoading = false;
            this.$message({
              message: '提交成功',
              type: 'success'
            });

            let enterTimeout = setTimeout(() => {
              window.clearTimeout(enterTimeout);
              enterTimeout = null;
              this.$router.push('/book-manager');
            }, 1500)
          })
        }
      })
},

3. Processamento dos dados retornados pela interface 

Deve haver situações normais e anormais no retorno da interface, portanto, quando a interface estiver anormal, ou seja, quando o valor do código retornado não for 200, solicitaremos ao usuário informações de msg e alteraremos a variável da chave isLoading para false, então que o usuário pode concluir o processamento Você pode continuar a enviar após a situação anormal e adicionar o código de retorno ao mesmo tempo para impedir que o código continue a ser executado

 Se a interface retornar ao estado normal, o prompt "Envio bem-sucedido" aparecerá normalmente e, depois que o usuário vir o prompt pop-up, ele pulará para a página da lista de livros com um atraso de 1.500 milissegundos.

4. SetTimeout deve ser limpo manualmente

Muitas pessoas pensam que se setTimeout não se referir internamente a variáveis ​​compostas externas, ou se não for usado para cálculos recursivos, não precisa ser limpo manualmente e o navegador o liberará automaticamente. No entanto, o irmão Gou sugere que, sempre que setTimeout for usado, não importa o quão simples as coisas sejam feitas internamente, ele deve ser limpo manualmente . E o código não é complicado, é fácil. Porque na manutenção de acompanhamento do código, ninguém sabe quem fará o quê no código e ninguém pode dizer o que acontecerá com a tecnologia futura, assim como ninguém disse setInterval antes, isso, aquilo, de repente um dia , os entrevistadores começaram a perguntar qual é o problema do setInterval, assim como acordar um dia, o servidor da empresa começou a atualizar o log4j, e muitas pessoas gostam de usar componentes de terceiros, então instale, muitas pessoas instalarão se quiserem preste atenção Sim, caso o usuário esteja usando um dia, aparece uma mensagem maravilhosa de repente, haha, está longe.

afinal

Esta coluna é uma série prática de projetos de separação de front-end e back-end criados em conjunto por mim e pelo servidor Tiange ( página inicial do Tiange ).O servidor de Tiange é: prática de projeto de separação de front-end SpringBoot+Vue . O irmão Tian já lançou muitas interfaces. Quero escrever um livro recentemente e estou trabalhando duro dia e noite, então o progresso está muito atrasado. Vou trabalhar mais e muitos amigos que compraram a coluna também a receberão Boa sorte com o código-fonte mais recente.

Por fim, preparei uma sessão de votação para todos, espero que gostem

Acho que você gosta

Origin blog.csdn.net/xingyu_qie/article/details/131796859
Recomendado
Clasificación