5. Style RESTful de SpringMVC et interaction ajax asynchrone

5. Style RESTful de SpringMVC et interaction ajax asynchrone

Springmvc utilise MappingJackson2HttpMessageConverter pour convertir les données json par défaut et doit ajouter
le package jackson ; en même temps, utilisez <mvc:annotation-driven />

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.9.8</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-core</artifactId>
  <version>2.9.8</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-annotations</artifactId>
  <version>2.9.0</version>
</dependency>

1. Annotation @RequestBody

Cette annotation est utilisée pour la déclaration formelle des paramètres de la méthode Controller. Lorsqu'elle est soumise à l'aide d'ajax et en spécifiant le contentType comme json, elle sera convertie en l'objet POJO correspondant via l'interface HttpMessageConverter.

    <input type="text" id="username" name="username" />
    <input type="text" id="age" name="age" />
    <button id="btn" >button2</button>
    <script>
        $("#btn").click(function () {
    
    

            let url = '${pageContext.request.contextPath}/user/ajaxRequest';
            let data = '[{"id":1,"username":"张三"},{"id":2,"username":"李四"}]';

            $.ajax({
    
    
                type: 'POST',
                url: url,
                data : data,
                contentType : 'application/json;charset=utf-8',
                success: function (resp) {
    
    
                    alert(JSON.stringify(resp));
                }
            })
        })
    @RequestMapping("/ajaxRequest")
    @ResponseBody
    public List<User> ajaxRequest(@RequestBody List<User> list){
    
    
        System.out.println(list);
        return list;
    }

2. @ResponseBody

Cette annotation est utilisée pour convertir l'objet renvoyé par la méthode Controller en données au format spécifié via l'interface HttpMessageConverter, telles que : json, xml, etc., et répondre au client via Response.

/*
 @RequestMapping
 produces = "application/json;charset=utf-8" 响应返回数据的mime类型和编码,默认为
json
*/
@RequestMapping(value = "/ajaxRequest")
@ResponseBody
public List<User> ajaxRequest(@RequestBody List<User> list) {
    
    
  System.out.println(list);
  return list;
}

3. Qu'est-ce que RESTful

Restful est un style d'architecture logicielle et un style de conception, pas une norme, mais fournit uniquement un ensemble de principes et de contraintes de conception. Principalement utilisés pour les logiciels d'interaction client-serveur, les logiciels conçus sur la base de ce style peuvent être plus concis, plus hiérarchiques et plus faciles à mettre en œuvre des mécanismes de mise en cache.

Les requêtes de style reposant utilisent "url + méthode de requête" pour indiquer le but d'une requête. Les quatre verbes du protocole HTTP qui indiquent la méthode d'opération sont les suivants :

  • GET : lire (Lire)

  • POST : Nouveau (Créer)

  • PUT:更新(Mise à jour)

  • SUPPRIMER : supprimer

    image-20220312154246255

4. Mise en œuvre du code

  • @PathVariable est
    utilisé pour recevoir la valeur de l'espace réservé dans l'adresse de requête RESTful
  • @RestController Le
    style RESTful est principalement utilisé pour le développement de projets de séparation front-end et back-end. Le front-end interagit avec le serveur de manière asynchrone via ajax. Notre processeur renvoie généralement des données json, donc @RestController est utilisé pour remplacer @Controller et @ Annotations ResponseBody.
// @Controller
@RestController
public class RestFulController {
    
    
  @GetMapping(value = "/user/{id}")
  // 相当于 @RequestMapping(value = "/user/{id}",method = RequestMethod.GET)
  // @ResponseBody
  public String get(@PathVariable Integer id) {
    
    
    return "get:" + id;
 }
  @PostMapping(value = "/user")
  // @ResponseBody
  public String post() {
    
    
    return "post";
 }
  @PutMapping(value = "/user")
  // @ResponseBody
  public String put() {
    
    
    return "put";
 }
  @DeleteMapping(value = "/user/{id}")
  // @ResponseBody
  public String delete(@PathVariable Integer id) {
    
    
    return "delete:"+ id;
 }
}

Je suppose que tu aimes

Origine blog.csdn.net/qq_41239465/article/details/123447957
conseillé
Classement