camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Charles Moulliard <ch0...@gmail.com>
Subject Workaround with REST DSL to avoid HTTP method not allowed - 405
Date Mon, 14 Sep 2015 12:42:11 GMT
Hi,

I try to see if there is a workaround to avoid this issue (HTTP method not
allowed - 405) or If I have to dig into the code to provide a fix

1) HTTP Method 405 - returned

This REST DSL definition generates a HTTP 405 Method not allowed when this
request is issued (http -v OPTIONS http://localhost:9191/blog/article/)


rest("/blog/").id("rest-blog-service").produces("application/json").consumes("application/json")

 .get("/article/search/user/{user}").id("rest-searchbyuser").outTypeList(Blog.class)
               .to("direct:searchByUser")

           .put("/article/").id("rest-put-article").type(Blog.class)
               .to("direct:add")

           rest("/blog/article/").id("rest-options")
             .verb("options")
             .route()
             .setHeader("Access-Control-Allow-Origin", constant("*"))
             .setHeader("Access-Control-Allow-Methods", constant("GET,
HEAD, POST, PUT, DELETE, OPTIONS"))
             .setHeader("Access-Control-Allow-Headers", constant("Origin,
Accept, X-Requested-With, Content-Type, Access-Control-Request-Method,
Access-Control-Request-Headers"))
             .setHeader("Allow", constant("GET, HEAD, POST, PUT, DELETE,
OPTIONS"));


http -v options http://localhost:9191/blog/article/
OPTIONS /blog/article/ HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 0
Host: localhost:9191
User-Agent: HTTPie/0.9.2

-->

HTTP/1.1 405 Method Not Allowed

endpoints registered

 INFO  Route: rest-searchbyid started and consuming from: Endpoint[
http://0.0.0.0:9191/blog/article/search/id/%7Bid%7D?httpMethodRestrict=GET]
INFO  Route: rest-searchbyuser started and consuming from: Endpoint[
http://0.0.0.0:9191/blog/article/search/user/%7Buser%7D?httpMethodRestrict=GET
]
INFO  Route: rest-put-article started and consuming from: Endpoint[
http://0.0.0.0:9191/blog/article?httpMethodRestrict=PUT]
INFO  Route: rest-deletearticle started and consuming from: Endpoint[
http://0.0.0.0:9191/blog/article/%7Bid%7D?httpMethodRestrict=DELETE]
INFO  Route: route1 started and consuming from: Endpoint[
http://0.0.0.0:9191/blog/article?httpMethodRestrict=OPTIONS]


while this is not the case If I comment the line with the put as you can
see hereafter


2) HTTP Method - 200 OK


rest("/blog/").id("rest-blog-service").produces("application/json").consumes("application/json")


 .get("/article/search/user/{user}").id("rest-searchbyuser").outTypeList(Blog.class)
               .to("direct:searchByUser")

           /* .put("/article/").id("rest-put-article").type(Blog.class)
               .to("direct:add") */

           rest("/blog/article/").id("rest-options")
             .verb("options")
             .route()
             .setHeader("Access-Control-Allow-Origin", constant("*"))
             .setHeader("Access-Control-Allow-Methods", constant("GET,
HEAD, POST, PUT, DELETE, OPTIONS"))
             .setHeader("Access-Control-Allow-Headers", constant("Origin,
Accept, X-Requested-With, Content-Type, Access-Control-Request-Method,
Access-Control-Request-Headers"))
             .setHeader("Allow", constant("GET, HEAD, POST, PUT, DELETE,
OPTIONS"));


Endpoints

INFO  Route: rest-searchbyid started and consuming from: Endpoint[
http://0.0.0.0:9191/blog/article/search/id/%7Bid%7D?httpMethodRestrict=GET]
INFO  Route: rest-searchbyuser started and consuming from: Endpoint[
http://0.0.0.0:9191/blog/article/search/user/%7Buser%7D?httpMethodRestrict=GET
]
INFO  Route: rest-deletearticle started and consuming from: Endpoint[
http://0.0.0.0:9191/blog/article/%7Bid%7D?httpMethodRestrict=DELETE]
INFO  Route: route1 started and consuming from: Endpoint[
http://0.0.0.0:9191/blog/article?httpMethodRestrict=OPTIONS]



http -v OPTIONS http://localhost:9191/blog/article/

-->

HTTP/1.1 200 OK
Accept: */*
Accept-Encoding: gzip, deflate
Access-Control-Allow-Headers: Origin, Accept, X-Requested-With,
Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers
Access-Control-Allow-Methods: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS,
CONNECT, PATCH
Access-Control-Allow-Origin: *
Access-Control-Max-Age: 3600
Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS


Regards,

-- 
Charles Moulliard
Apache Committer / Architect @RedHat
Twitter : @cmoulliard | Blog :  http://cmoulliard.github.io

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message