Bu çok basit bir post ama bazen farklı controller kullanarak, farklı URL modeli yaratmayı soranlar ile karşılaşıyorum. Aşağıdaki örnek nasıl yapılabileceğini gösteriyor. Örnek API, home ve dokümantasyon adreslerini birbirlerinden ayırıyor.


URL adresleri


$ bin/console debug:router
------------------- -------- -------- ------ --------------------------
Name Method Scheme Host Path
------------------- -------- -------- ------ --------------------------
app_country_index GET ANY ANY /api/v1/countries
app_message_index POST ANY ANY /api/v1/messages/{type}
home GET ANY ANY /
documentation GET ANY ANY /documentation
------------------- -------- -------- ------ --------------------------

Route dosyaları


Bu /api/v1 URL adreslerinden sorumlu.


config/routes/annotations.yaml


controllers:
resource: ../../src/Controller/
type: annotation
prefix: /api/v1

config/routes.yaml


Bu diğer URL adreslerinden sorumlu.


home:
path: /
methods: [GET]
controller: App\Controller\HomeController::index

documentation:
path: /documentation
methods: [GET]
controller: App\Controller\DocumentationController::index

Controller


CountryController


/**
* @Route("/countries")
*/
class CountryController
{
/**
* @Route("")
* @Method({"GET"})
*/
public function index()
{
}
}

MessageController


/**
* @Route("/messages")
*/
class MessageController
{
/**
* @Route("/{type}")
* @Method({"POST"})
*/
public function index(Request $request, string $type)
{
}
}

HomeController


class HomeController
{
public function index()
{
}
}

DocumentationController


class DocumentationController
{
public function index()
{
}
}