2017-06-16 2 views
1

Im möglicherweise es gerade fehlt, möchte ich einige Rest Methoden von Controllern verbergen, die sie nicht wie Optionen implementieren, löschen KopfPrahlerei-ui Wie Sie Rest Methoden verbergen nicht implementiert

Gibt es eine Anmerkung für Dies? Ich konnte es nicht finden in der Dokumentation https://github.com/nelmio/NelmioApiDocBundle v3

derzeit, wenn ich sehe/api/doc irgendwelche Controller ich hinzufügen listet alle Rest Methoden, auch wenn ich nur eine GET-Methode implementiert haben.

enter image description here

<?php 

namespace ApiBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security; 
use Symfony\Component\Routing\Annotation\Route; 
use Symfony\Component\HttpFoundation\JsonResponse; 

use Swagger\Annotations as SWG; 


class UserController extends Controller 
{ 


    /** 
    * @Security("is_granted('IS_AUTHENTICATED_FULLY')") 
    * @Route("/api/users", name="get_users", methods={"GET"}) 
    * 
    * @SWG\Response(
    *  response=200, 
    *  description="Returns all users" 
    *) 
    * @SWG\Tag(name="users") 
    * 
    * 
    * @return \Symfony\Component\HttpFoundation\JsonResponse 
    */ 
    public function getUsersAction() 
    { 

     $repo = $this->getDoctrine() 
      ->getRepository('AccountBundle:User'); 
     $users = $repo->createQueryBuilder('q') 
      ->getQuery() 
      ->getArrayResult(); 

     return new JsonResponse($users); 

    } 

} 
+0

Nun, der Grund für Sie Schnittstellen einrichten, es ist zu folgen und alle ihre Methoden zu implementieren. Wenn Ihre Klassen eine Schnittstelle implementieren und nicht alle Methoden implementieren, tun Sie einfach falsch. Erstellen Sie eine einfache Schnittstelle ohne diese ungenutzten Signaturen und lassen Sie sie von Ihren Klassen implementieren. –

+0

Diese Klasse implementiert keine Schnittstelle – user1930591

+0

können Sie Ihren gesamten Klassencode posten? –

Antwort

0

dachte es einfach aus, wenn Sie nicht die Methoden in der Steuerung in der @Route() Anmerkung angeben, dann wird es alle von ihnen zeigen, aber wenn Sie Methoden hinzufügen = {} zum Routen Anmerkung Liste wird dann nur die definierten Methoden

* @Route("/api/users", name="get_users", methods={"GET"}) 

enter image description here

0

Geben Sie @Value und @method Typ im @RequestMapping

@RequestMapping(value="/instances/all",method=RequestMethod.GET) 
@JsonFormat 
public String showInstances(){ 
    return "instances"; 
} 
Verwandte Themen