【发布时间】:2015-09-26 21:51:58
【问题描述】:
如何使用 phoenix 框架在 elixir 应用程序中启用自定义 HTTP 动词?
我可以看到get、post 等宏是如何在https://github.com/phoenixframework/phoenix/blob/master/lib/phoenix/router.ex#L320-L334 中创建的。但是,可能是因为使用了嵌套的宏架构,我无法使用这样的路由器定义来实现自定义 HTTP 动词,例如 bla:
Phoenix.Router.Scope.route Ical.Router, :match, :bla, "/bla", PageController, :bla, []
虽然不会导致编译器错误,但在执行 BLA /bla HTTP/1.1 请求时会产生 404。
在尝试使用 GET 模拟 GET 行为时它甚至不起作用
Phoenix.Router.Scope.route Ical.Router, :match, :get, "/bla", PageController, :bla, []
对此的任何提示将不胜感激!
【问题讨论】:
-
Phoenix.Router.Scope.route没有记录,因此它是 Phoenix 网络框架私有的。请不要调用私有函数,Phoenix 可以随时更改,您的代码会中断。为什么需要自定义 HTTP 动词?这样做涉及许多取舍,因此不应轻易完成:programmers.stackexchange.com/questions/193821/… -
您好,何塞,感谢您的评论。自定义 HTTP 动词的意图确实不是发明一种新的通信协议,而是探索实现 WebDAV/CalDAV 协议的子集。据我了解,由于我的研究才刚刚开始,因此需要自定义 HTTP 动词。
-
所以最好在 Phoenix 问题跟踪器中打开一个问题。我不认为我们现在支持他们。 :)