2017-09-25 6 views
0

Je crée une application de démarrage à ressort. J'y ajoute quelques points de terminaison. Dans ce processus, certains des points d'extrémité sont sécurisés et d'autres ne le sont pas.Extrémités inconnues ajoutées à l'application de démarrage du ressort

Une fois l'application installée, j'obtiens des points de terminaison supplémentaires donnant des informations d'application qui ne sont même pas exposées.

Exemple: Certains des points d'extrémité exposés sont

@RestController 
@RequestMapping("/category/v1") 
public class ControllerClass { 
    @RequestMapping(value="/pillars", method=RequestMethod.GET) 
    public String pillarGetMethod() { 
     //method 
    } 

    @RequestMapping(value="/frameworks", method=RequestMethod.GET) 
    public String frameworkGetMethod() { 
     //method 
    } 
} 

Maintenant, l'attente est nous aurons

  • /catégorie/v1/piliers
  • /catégorie/v1/cadres

devrait être exposé.

Mais que

  • /piliers
  • /cadres

est également s'exposée à la réponse que

{ 
    "_embedded" : { 
    "pillars" : [ { 

    } ] 
    }, 
    "_links" : { 
    "self" : { 
     "href" : "http://<ip>/pillars{?page,size,sort}", 
     "templated" : true 
    }, 
    "profile" : { 
     "href" : "http://<ip>/profile/pillars" 
    }, 
    "search" : { 
     "href" : "http://<ip>/pillars/search" 
    } 
    }, 
    "page" : { 
    "size" : 20, 
    "totalElements" : 5, 
    "totalPages" : 1, 
    "number" : 0 
    } 
} 

je besoin d'aide sur la compréhension de la production et aussi comment Je peux empêcher cela d'être exposé.

+2

Avez-vous défini quelque chose comme des classes PillarRepository et Framework qui étendent CrudRepository? Si c'est le cas, les ressources sous-jacentes sont automatiquement exposées par Spring Rest/Spring Data Rest, sauf si vous annotez les dépôts avec '@RepositoryRestResource (exported = false)'. –

+0

Merci beaucoup @ Marc. Il a résolu le problème. S'il vous plaît ajouter la réponse comme réponse, je serai très heureux d'accepter la réponse comme réponse correcte. – Shaleen

Répondre

1

Je suppose que vous avez défini quelque chose comme:

public class PillarRepository extends CrudRepository<Pillar, String> { ... } 

public class FrameworkPillarRepository extends CrudRepository<Pillar, String> { ... } 

Si oui, les ressources sous-jacentes sont exposées automatiquement par Spring Boot/Spring Rest données, à moins que vous annoter les dépôts avec @RepositoryRestResource(exported = false).

Si vous souhaitez simplement reproduire le comportement GET automatique, mais avec un chemin personnalisé, utilisez l'option path.