簡體   English   中英

使用API​​ Web服務進行Symfony路由

[英]Symfony routing with an API Web Service

我正在完成我們的Web服務的API。 現在,我正在考慮如何更改路線,因此,如果我們決定制作一個新版本,我們不會破壞第一個API。

馬上:

url: /api/:action
param: { module: api, action: :action }
requirements:
  sf_format: (?:xml|json)

我的想法:

url: /api/v1/:module/:action
param: { module: api1, action: :action }
requirements:
  sf_format: (?:xml|json)

url: /api/v2/:module/:action
param: { module: api2, action: :action }
requirements:
  sf_format: (?:xml|json)

這很容易,但是完美的解決方案是采用以下方法

# Automatically redirects to one module or another
url: /api/v:version/:module/:action
param: { module: api:version, action: :action }
requirements:
  sf_format: (?:xml|json)

關於如何做的任何想法? 您推薦我們做什么?

謝謝!

我認為擁有2條路由的方法是更好的解決方案,一條帶有v1,另一條帶有v2。 這聽起來像是在重做工作,但是如果您開始思考,必須使用verson的原因是第一個與第二個不兼容。 因此,將這兩種邏輯混合在一起會顯得過大。 如果您認為將來某個時候您可以擁有3個版本,那么您認為自己的邏輯會如何?

更好的解決方案是將兩者分開,因此,如果您需要停止對版本1的支持,則很容易刪除版本1的文件。=)

僅使用舊的路由規則並將.xml1 / .xml2 / .json1 / .json2追加到末尾怎么樣? 這樣,您可以重用當前的模塊,而只需創建一個新視圖(“ indexSuccess.xml1.php”)。

還是創建一個新的路由類?

你或許應該創建一個自定義路由集合,如圖所示這里

這將使您能夠滿足您的任何路由需求。 您可以將版本邏輯移至路由類和路由收集類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM