Ошибка Jetty: HTTP-метод GET не поддерживается этим URL-адресом - PullRequest
0 голосов
/ 30 мая 2020

Я использую HTTP4S , а веб-приложение работает на пристани. Файл веб-приложения настроен как:

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">


   <servlet>
      <servlet-name>user-svc</servlet-name>
      <servlet-class>io.databaker.UserSvcServlet</servlet-class>
      <async-supported>true</async-supported>
   </servlet>

   <servlet-mapping>
      <servlet-name>user-svc</servlet-name>
      <url-pattern>/*</url-pattern>
   </servlet-mapping>

</web-app>

Доступные URI:

object UserSvcRoutes {

  def helloWorldRoutes[F[_]: Sync](H: HelloWorld[F]): HttpRoutes[F] = {
    val dsl = new Http4sDsl[F]{}
    import dsl._
    HttpRoutes.of[F] {
      case GET -> Root =>
        Ok("Example")
      case GET -> Root / "hello" / name =>
        for {
          greeting <- H.hello(HelloWorld.Name(name))
          resp <- Ok(greeting)
        } yield resp
    }
  }

}

Когда я звоню http://localhost: 8080 / У меня есть :

enter image description here Что я делаю не так?

1 Ответ

1 голос
/ 30 мая 2020

Http4sServlet был недавно сделан абстрактным, с двумя конкретными реализациями, предоставленными BlockingHttp4sServlet и AsyncHttp4sServlet.

You можете заставить ваш пример работать, изменив UserSvcServlet, чтобы расширить любое из них:

package io.databaker

import AppContextShift._
import cats.effect._
import java.util.concurrent.Executors
import org.http4s.server.DefaultServiceErrorHandler
import org.http4s.servlet.BlockingHttp4sServlet
import org.http4s.servlet.BlockingServletIo

class UserSvcServlet
  extends BlockingHttp4sServlet[IO](
    service = UserSvcServer.start,
    servletIo = BlockingServletIo(4096, Blocker.liftExecutorService(Executors.newCachedThreadPool())),
    serviceErrorHandler = DefaultServiceErrorHandler
  )
...