Recentemente aprendi a especificação da interface RESTful e usei o Postman para apresentá-la. Aqui estão as especificações relevantes da interface RESTful: 1. O que é RESTful?
REST: É um estilo arquitetônico para serviços da web; usa padrões e protocolos amplamente populares, como HTTP, URI, XML, JSON e HTML; é um design arquitetônico leve, multiplataforma e multilinguagem; estilo, não Um padrão é uma ideia.
RESTful: O chinês correspondente é REST; o serviço da web Restful é um aplicativo REST comum, que é um serviço da web que está em conformidade com o estilo REST, é um tipo de arquitetura ROA (arquitetura orientada a recursos); ) [Recomendação: front-end da web]
A essência do RESTful é um estilo de arquitetura de software. O núcleo é orientado a recursos e resolve os seguintes problemas:
Reduza a complexidade do desenvolvimento
Melhore a escalabilidade do sistema
2.A diferença entre SOAP e REST:
SOAP (Simple Object Access Protocol): Uma especificação de protocolo para troca de dados. É um protocolo leve e simples baseado em XML.
REST (Representational State Transfer): Um estilo de arquitetura de software que pode reduzir a complexidade do desenvolvimento e melhorar a escalabilidade do sistema.
Eficiência e facilidade de uso :
SOAP : Devido à contínua expansão do conteúdo de seu próprio protocolo devido a diversas necessidades, o desempenho do processamento SOAP diminuiu. Ao mesmo tempo, a facilidade de utilização e os custos de aprendizagem também aumentaram.
RESTful : Devido ao seu design de interface orientado a recursos e abstração de operação, ele simplifica os projetos ruins dos desenvolvedores e também aproveita ao máximo o conceito original de design de protocolo de aplicativo HTTP.
Segurança :
RESTful é muito adequado para interfaces de serviço baseadas em recursos e é especialmente adequado para cenários que exigem alta eficiência, mas baixos requisitos de segurança.
A maturidade do SOAP pode trazer comodidade ao design de interfaces que precisam ser fornecidas para múltiplas linguagens de desenvolvimento e possuem requisitos de segurança mais elevados.
Resumindo:
Segurança : SOAP será melhor que REST;
Eficiência e facilidade de uso : REST é melhor;
Maturidade : De modo geral, SOAP é superior ao REST em termos de maturidade.
3. Como projetar uma API RESTful :
Caminho do recurso : Na arquitetura RESTful, cada URL representa um recurso, portanto a URL não pode conter verbos, apenas substantivos. De modo geral, os substantivos nas APIs devem estar no plural.
Verbo HTTP : Operação de recursos (CURD), representado pelo verbo HTTP (predicado).
GET: Recupera recursos (um ou mais itens) do servidor.
POST: Crie um novo recurso no servidor.
PUT: Atualiza recursos no servidor (o cliente fornece os recursos alterados completos).
DELETE: Exclua o recurso do servidor.
Tomemos o zoológico como exemplo (incluindo informações sobre vários animais e funcionários):
https://api.example.com/v1/zoos //Recursos do zoológico https://api.example.com/v1/animals //Recursos de animais https://api.example.com/v1/employees //Funcionários recurso
POST /zoos: Crie um novo zoológico
GET /zoos/ID: obtém informações sobre um zoológico específico
PUT /zoos/ID: atualiza as informações de um zoológico específico
DELETE /zoos/D: Exclui um zoológico
Filtrar informações :
?limit=10: Especifique o número de registros retornados
?offset=10: Especifica a posição inicial do registro retornado.
?page=2&per_page=100: Especifique qual página e número de registros por página.
?sortby=name&order=asc: Especifique por qual atributo os resultados retornados são classificados e a ordem de classificação.
?animal_type_id=1: Especifique as condições de filtro
Código de estado :
200 (OK) – se um recurso existente foi alterado
201 (criado) – se um novo recurso for criado
202 (aceito) – A solicitação de processamento foi aceita, mas não foi concluída (processamento assíncrono)
301 (Movido Permanentemente) – O URI do recurso foi atualizado
303 (Ver Outros)-Outros (como balanceamento de carga)
400 (solicitação incorreta) – refere-se a uma solicitação incorreta
404 (não encontrado) – O recurso não existe
406 (não aceitável) – O servidor não suporta a representação necessária
409 (conflito) - Conflito genérico
412 (Falha na pré-condição) - A pré-condição falhou (como um conflito ao executar atualizações de condição)
415 (tipo de mídia não suportado) – A representação recebida não é suportada
500 (erro interno do servidor) - resposta de erro genérica
503 (Serviço indisponível) – O serviço atualmente não consegue lidar com a solicitação
Tratamento de erros :
As informações retornadas usam erro como nome da chave e informações de erro como valor da chave.
{ erro: “Chave de API inválida” }
Resultados de retorno :
GET /collection: Retorna uma lista (matriz) de objetos de recurso
GET /collection/resource: Retorna um único objeto de recurso
POST /collection: Retorna o objeto de recurso recém-gerado
PUT /collection/resource: Retorna o objeto de recurso completo
PATCH /collection/resource: Retorna o objeto de recurso completo
DELETE /collection/resource: retorna um documento vazio
4. Processo de teste de interface estilo REST :
Vamos apresentá-lo diretamente com uma imagem.
5. Escrita de código e teste do Postman :
Ferramentas: ideia, banco de dados mysql, Postman
Dados da tabela do banco de dados:
Classe de entidade:
Entrada front-end (vue) para curso de domínio: entre no aprendizado
@Dados @ApiModel("Classe de Entidade do Usuário") classe pública Usuário estende Modelo<Usuário> implementa Serializable { @ApiModelProperty("ID do usuário") @NotNull(message = "ID do usuário não pode ficar vazio") ID inteiro privado; @NotBlank(message = "Nome de usuário não pode ficar em branco") @ApiModelProperty("nome de usuário") nome da string privada; @Mínimo(1) @Máx(100) @ApiModelProperty("Idade do usuário") idade inteira privada; @NotEmpty(message = "A caixa de correio não pode estar vazia") @ApiModelProperty("E-mail do usuário") @E-mail email de string privado; @ApiModelProperty("0: Não excluído 1: Excluído") @TableLogic Inteiro privado excluído; @NotBlank(message = "A senha não pode ficar em branco") @ApiModelProperty("Senha do usuário") senha de string privada; }
Código da camada controladora (camada de serviço omitida):
@Api(tags = "Gerenciamento de usuários") @RestController @RequestMapping("/MeuSite/usuário") classe pública UserController { @Autowired userServiceImpl privado userServiceimpl; @ApiOperation(valor = "Novo usuário") @PostMapping public int insertUser(Usuário usuário) { System.out.println("Adicionar com sucesso"); retornar userServiceimpl.insertUser (usuário); } @ApiOperation(value = "Modificar informações do usuário") @PutMapping public void updateUser(@RequestBody @Usuário válido usuário) { userServiceimpl.updateUser(usuário); System.out.println("Modificação bem sucedida"); } @ApiOperation(value = "Excluir usuário", notas = "Excluir usuário com base no id") @DeleteMapping("/{id}") public int deleteUser(@ApiParam("ID do usuário") @PathVariable @Valid ID inteiro) { System.out.println("Exclusão bem sucedida"); retornar userServiceimpl.deleteUser(id); } @ApiOperation(value = "Consultar todos os usuários") @GetMapping public List<Usuário> allUser() { System.out.println("Consulta bem sucedida"); retornar userServiceimpl.allUser(); } @ApiOperation(value = "id consulta usuário") @GetMapping("/{id}") usuário público selectById(@PathVariable("id") String id) { retornar userServiceimpl.selectById(id); } }
Use o Postman para testar (o caminho do URL deve corresponder):
Consulte todos os usuários : http://localhost:8081/MyWebsite/user
Cabeçalho: Content-Type = aplicativo/json
Corpo: vazio
Consulta bem-sucedida!
Consulta baseada no id:
Consulta bem-sucedida!
Adicionar novo usuário :
Verifique se o banco de dados foi adicionado com sucesso!
Modifique as informações do usuário (modifique o nome e a idade com ID 7):
Verifique se a modificação do banco de dados foi bem-sucedida!
Exclua usuários com base no id :
Verifique se o banco de dados foi excluído com sucesso! (excluído=1)
Talvez você tenha excluído todos os dados diretamente
Ao consultar, atualizar ou excluir dados inexistentes (ou os dados são ilegais), a execução falha. Existem outras interfaces, como a exclusão de todas as interfaces, não as testei uma por uma aqui. apontá-los.
O texto acima é uma introdução detalhada da especificação da interface tranquila e da ferramenta de depuração do carteiro!