Maison >Java >javaDidacticiel >Comment mapper une requête http à une méthode ? Premiers pas avec SpringBoot : mappage d'URL

Comment mapper une requête http à une méthode ? Premiers pas avec SpringBoot : mappage d'URL

php是最好的语言
php是最好的语言original
2018-07-27 10:24:025847parcourir

0x000 Présentation : mappez une requête http à une méthode. 0x001 @RequestMapping : Cette annotation peut être ajoutée à un contrôleur ou à une méthode. Si elle est ajoutée au contrôleur,

0x000 Aperçu

mappe une http requête à une méthode

. 0x001 @RequestMapping

Cette annotation peut être ajoutée à un certain Controller ou à une méthode. Si elle est ajoutée à un Controller, toutes les routes de ce Controller seront mappées. Ce préfixe sera ajouté (. il y aura des châtaignes en dessous). S'il est ajouté à la méthode, il n'y aura pas de préfixe (il y aura des châtaignes en dessous).

@RequestMapping possède les attributs suivants

  • value : Le chemin du URL

  • path : Identique à value

  • method : Méthode de requête

  • consumes : Types de médias autorisés, c'est-à-dire Content-Type

  • produces : Le type de média correspondant, c'est-à-dire Accept

  • params : Paramètres de la requête

  • headers : En-tête de demande

0x002 itinéraire correspondant

  1. écrivez d'abord Controller, Controller Le @RestController dans l'en-tête marque ce contrôleur comme un contrôleur Rest :

    package com.lyxxxx.rest.controller;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class HelloController {
    
    }
  2. Ajoutez une méthode et ajoutez une correspondance URL :

        @RequestMapping()
        public Object hello() {
            return "hello";
        }

    Explication : Une méthode est ajoutée ci-dessus, nommée hello Si aucun attribut n'est donné, tous les URL seront mis en correspondance par défaut, et la méthode est GET, donc nous pouvons directement Utiliser la méthode GET pour accéder à l'itinéraire

    $ curl 127.0.0.1:8080
    hello
    $ curl 127.0.0.1:8080/user
    hello
    $ curl 127.0.0.1:8080/user/1
    hello
  3. Correspondance exacte

    @RequestMapping(value = "/hello2")
    public Object hello2() {
        return "hello2";
    }

    Instructions : ci-dessus Définissez value sur hello2, donc l'accès à hello2 exécutera la méthode hello2

    $ curl 127.0.0.1:8080/hello2
    hello2
  4. correspondance floue des caractères

    @RequestMapping(value = "/hello3/*")
    public Object hello3() {
        return "hello3";
    }

    Explication : L'ensemble ci-dessus value sur /hello3/*, et * correspond à tous les caractères, c'est-à-dire que tous les hello3 sous accès URL correspondront à ceci prévention

    $ curl 127.0.0.1:8080/hello3/user
    hello3
     curl 127.0.0.1:8080/hello3/1
    hello3
  5. Correspondance floue à un seul caractère

    $ curl 127.0.0.1:8080/hello4/1
    hello4

    Remarque : définissez value sur ,/hello4/? correspond à un seul caractère, correspondant à ?, mais ne correspondra pas à hello4/1hello4/11

    $ curl 127.0.0.1:8080/hello4/1
    hello4
    $ curl 127.0.0.1:8080/hello4/12
    {"timestamp":"2018-07-25T05:29:39.105+0000","status":404,"error":"Not Found","message":"No message available","path":"/hello4/12"}
  6. correspondance floue de chemin complet

    @RequestMapping(value = "/hello5/**")
    public Object hello5() {
        return "hello5";
    }

    Remarque : est défini sur value ci-dessus et /hello5/** correspond à tous les chemins, donc tous les itinéraires ci-dessous ** correspondront à cette méthode hello5

    $ curl 127.0.0.1:8080/hello5
    hello5
    $ curl 127.0.0.1:8080/hello5/user/1
    hello5
  7. Correspondance de chemins multiples

    @RequestMapping(value = {"/hello6", "/hello6/1"})
    public Object hello6() {
        return "hello6";
    }
    $ curl 127.0.0.1:8080/hello6
    hello6
    $ curl 127.0.0.1:8080/hello6/1
    hello6F
  8. Lire la configuration

    // resources/application.properties
    
    app.name=hello7
    
    // com.lyxxxx.rest.controller.HelloController
    
    @RequestMapping(value = "${app.name}")
    public Object hello7() {
        return "hello7";
    }
    $ curl 127.0.0.1:8080/hello7
    hello7
La méthode 0x003 correspond à

correspond au

dans la requête, la valeur d'énumération écrite en method : RequestMethod

  • GET

  • HEAD

  • POST

  • PUT

  • PATCH

  • DELETE

  • OPTIONS

  • TRACE

package com.lyxxxx.rest.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MethodController {
    @RequestMapping(path = "method/get", method = RequestMethod.GET)
    public Object get() {
        return "get";
    }

    @RequestMapping(path = "method/head", method = RequestMethod.HEAD)
    public Object head() {
        return "head";
    }

    @RequestMapping(path = "method/post", method = RequestMethod.POST)
    public Object post() {
        return "post";
    }

    @RequestMapping(path = "method/put", method = RequestMethod.PUT)
    public Object put() {
        return "put";
    }

    @RequestMapping(path = "method/patch", method = RequestMethod.PATCH)
    public Object patch() {
        return "patch";
    }

    @RequestMapping(path = "method/delete", method = RequestMethod.DELETE)
    public Object delete() {
        return "delete";
    }

    @RequestMapping(path = "method/options", method = RequestMethod.OPTIONS)
    public Object options() {
        return "options";
    }

    @RequestMapping(path = "method/trace", method = RequestMethod.TRACE)
    public Object trace() {
        return "trace";
    }


}
$ curl -X GET  127.0.0.1:8080/method/get
get
$ curl -X POST 127.0.0.1:8080/method/post
post
$ curl -X DELETE 127.0.0.1:8080/method/delete
delete
$ curl -X PUT 127.0.0.1:8080/method/put
put
...
0x003 les paramètres correspondent à

en plus de la correspondance

En plus de URL, il peut également correspondre à methodparams

package com.lyxxxx.rest.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ParamsController {
    @RequestMapping(path = "/params", params = "userId=1")
    public Object params() {
        return "params";
    }
}
$ curl 127.0.0.1:8080/params?userId=1
params
0x004 Remarque

et aux données de référence ci-dessus : "L'essence de Spring Boot 2, de la construction de petits systèmes à. Système de déploiement architectural》

Articles connexes :

Bases de démarrage avec mybatis (4)----Mappage d'entrée et mappage de sortie

django" "règles de mappage d'url" et "ordre de réponse du serveur"

Vidéos associées :

Tutoriel d'introduction CSS3

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn