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