Scala Проблема маршрутизации и приоритетов API - PullRequest
0 голосов
/ 01 апреля 2020

Я работаю над приложением, чтобы выставить некоторые конечные точки REST, используя scala. Из моего файла маршрутов я перенаправил все вызовы на / api в другой класс ApiRouter , -> /api api.ApiRouter. В этом классе (ApiRouter) у меня есть два маршрута, которые вызывают у меня проблемы:

  1. Отправить код авторизации:
    case GET(p"/$phone" ? q_o"debug=${bool(debug) }") =>
      customerApi.sendAuthCode(phone, debug)

2 Получить историю платежей

    case GET(
        p/payments" ? q_o"filterBy=${filter(by) }" & q_o"filterValue=$value" & q_o"page=${int(
          page
        ) }" & q_o"size=${int(size) }"
        ) =>
      customerApi.paymentHistory(by, value, page, size)

После компиляции, когда я пытаюсь получить доступ к {myhost} / api / {phone} , выполняется метод отправки кода авторизации. Когда я пытаюсь получить доступ к {myhost} / api / payment? {Params} , снова выполняется метод отправки кода авторизации.

Я пытался изменить порядок их декларации, но я все еще заканчивается тем же результатом.

Буду признателен за любую помощь, которую я могу получить по этому вопросу Спасибо.

Ниже приведено текущее состояние моего кода:

class CustomerApiRouter @Inject()(
    customerApi: CustomerApiController,
    oauthController: OAuth2Controller
) extends SimpleRouter {

  override def routes: Routes = {
    case POST(p"/access_token") =>
      oauthController.customerToken()
    case GET(
        p"/accounts" ? q_o"page=${int(page) }" & q_o"size=${int(size) }"
        ) =>
      customerApi.listAccounts(page, size)
    case GET(p"/$phone" ? q_o"debug=${bool(debug) }") =>
      customerApi.sendAuthCode(phone, debug)
    case GET(
        p"/payments" ? q_o"filterBy=${filter(by) }" & q_o"filterValue=$value" & q_o"page=${int(
          page
        ) }" & q_o"size=${int(size) }"
        ) =>
      customerApi.paymentHistory(by, value, page, size)
    case POST(p"/payments/$merchantId/accounts/$accountId") =>
      customerApi.pay(merchantId, accountId)
    case POST(p"/payments/$reference/verify") =>
      customerApi.verify(reference)
  }
}

...