2

私はこれを持つことができるようにしたい:

POST /items controllers.Application.update()
POST /items/:itemType controllers.Application.update(itemType: String)
POST /items/:itemType/:id controllers.Application.update(itemType: String, id: Int)

のエラーのためにコンパイルされませんmethod update is defined twice。それから私はそれを変更しましたが、コンパイラもしませんでした:

POST /items controllers.Application.update(itemType: Option[String] = None, id: Option[Int] = None)
POST /items/:itemType controllers.Application.update(itemType: String, id: Option[Int] = None)
POST /items/:itemType/:id controllers.Application.update(itemType: String, id: Int)

エラーは次のとおりです。

  1. 前のもの
  2. type mismatch; found: Option[String]; required: String

私はそれについて何をしますか?私このようなことをしたくありません:

POST /items controllers.Application.updateAll()
POST /items/:itemType controllers.Application.updateByType(itemType: String)
POST /items/:itemType/:id controllers.Application.updateByTypeAndId(itemType: String, id: Int)

空の文字列の代わりに使用したいので、これも見栄えがよくありません。Option

POST /items controllers.Application.update(itemType: String = "", id: Int = "")
POST /items/:itemType/:id controllers.Application.update(itemType: String, id: Int = "")
POST /items/:itemType/:id controllers.Application.update(itemType: String, id: Int)
4

2 に答える 2

1

残念ながら、オプションのサポートはv2で削除されたようです-たとえば、ここPathBindableを参照してください-そのため、オプションを処理するために独自にコーディングするか(上記のリンクで述べたように)、またはあなたが指摘した他の不快な選択肢のいずれかで立ち往生している可能性があります。

于 2013-10-11T03:29:53.500 に答える
1

URL 形式を変更できる場合は、オプションを使用できます。

ルート:POST /items controllers.Application.update(itemType: Option[String], id: Option[Int])

URL:http://localhost:9000/items?itemType=someItem&id=123

この形式を使用すると、Web サービス呼び出しを行うときに、itemType、id、またはその両方を省略できます。

于 2013-10-11T13:29:47.180 に答える