问题标签 [gorilla]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - 使用接口返回类型定义接口方法
TLDR如果您尝试运行它,这是一个演示问题的游乐场:https: //play.golang.org/p/myQtUVg1iq
我正在制作一个 REST API,并且有多种类型的资源可以通过 GET 请求检索
我有一个模型包,它抽象了不同资源的实现方式:
路由文件设置所有路由和处理程序:
我试图通过创建一个接口来使其更通用,然后只需要一个 GetHandler。像这样的东西:
这真的很接近工作,唯一的问题是模型的返回类型是特定的对象类型,但接口只使用接口返回类型。有没有办法在不让模型返回的情况下解决这个问题[]interface{}?
rest - REST 上不受支持的 HTTP 方法返回什么响应代码?
我正在使用 Gorilla Mux 来处理我的 REST API 的 HTTP 路由。我正在为我的 API 使用以下绑定:
然后我做一个这样的CURL:
正如预期的那样,该方法APIUsers没有被调用。我确实得到了200 OK回报:
我是否应该对 Gorilla 进行不同的操作,例如将所有失败的功能绑定到指定的功能?另外我想知道在不受支持的函数上返回的典型 HTTP 代码是什么。我假设该400范围内的代码,但我不确定使用哪个。我不希望这样200,因为请求不是“ OK”。
关于这个主题的任何想法和提示?
sql - Can I use gorilla schema with an sql.NullString?
I am using gorilla schema to populate a struct based on a user's form submission. My struct contains sql.NullString and I am currently getting the following error:
schema: converter not found for sql.NullString
How can I use sql.NullString in a struct that I want to populate with gorilla schema?
http - 从中间件获取 gorilla/mux 路由器当前路由名称
问题: 无法从中间件访问 mux.CurrentRoute(r).GetName()。(虽然我已经能够从我的中间件访问它,但我不得不改变我的中间件的工作方式,因为它以前无法访问请求)。所以我搞砸了一些东西,我不确定如何回到可以访问路由名称的工作状态。
任何帮助将非常感激!
错误:
代码:
更新(2015-01-04 @ 4:49PM EST):所以在删除中间件(或至少注释掉试图读取 mux.CurrentRoute 的部分)之后,我能够从目标 handlerfunc 检索路由名称(例如: usersCreateHandlerFunc 或brandCreateHandlerFunc)。这并不能解决我的问题(我仍然想在中间件中执行身份验证/授权,而不是每个 handlerfunc),我有一种预感,它让我知道 *mux.Router 在我的中间件中不可用,直到最终之后.ServeHTTP 调用。(或类似的规定...)
更新(2015-01-04 @ 5:41PM EST):尝试了使用 Negroni 作为中间件组件的不同(尽管不太受欢迎)方向。当我尝试获取 mux.CurrentRoute 时仍然出现零指针错误。
更新(2015-01-04 @ 6:17PM EST):我能够从中间件 func 访问请求(例如:r.URL),但仍然无法访问 mux.Route(例如:mux.CurrentRoute( r))。在多看多路复用源之后,我认为这是因为当前的多路复用上下文没有设置,因为路由器还没有执行匹配器(因此它不知道它当前在哪个路由上,直到中间件之后已经完成)。但是,我仍然不确定如何解决这个问题,或者重新构建我的代码来处理这个问题。
go - Golang net/http 和 Gorilla:在处理程序之前运行代码
是否可以使用 net/http 包和/或任何 gorilla 库在进入处理程序之前在每个 URL 上执行一些代码?例如,检查连接是否来自列入黑名单的 IP 地址?
go - 在 Gorilla / Mux 中反转子路由器
我想获取命名子路由的路径,但下面的代码不起作用。当我尝试在非子路由上使用相同的逻辑时,它工作正常。如何获取命名子路由的路径?
上面给出了这个错误:
现在,如果我这样做 router.HandleFunc("/home", c.GetHomeHandler).Name("home"),它工作得很好。
感谢你的帮助。
更新:
这是一个合理的解决方法,但它避免了创建子路由。这对我上面的例子来说很好,但可能并不理想,因为你不会得到子路由的所有好处。
谢谢!
go - 无法按键获取大猩猩会话值
我不能以这种方式从会话中获得价值,它是nil:
完整代码:
输出:
首先我打开 urlhttp://localhost:3000/setSession并获得输出:
然后我打开 urlhttp://localhost:3000/getSession并得到输出:
为什么valWithOutType是 nil,尽管我将它设置为请求/setSession?
更新
我根据@isza 的答案更改了代码,但会话值仍然是nil.
web-applications - Go Gorilla mux 处理 API 请求
我想从以下 Gorilla Mux 路由器 input.package main 中获取地图结构
例如,
服务0.0.0.0:3000/api/input并打印出字符串input
如果我希望能够接收以下请求怎么办:
0.0.0.0:3000/api/v3?id=hello&password=great&product=ipad&confirm=true
从这个请求中,我想得到一张地图:
go - 用于子路径路由的 Gorilla Mux
我有以下路线:
随着我的路线越来越多,管理起来变得越来越困难。
我想做类似的事情:
所有处理程序在另一个包中分开
有什么方法可以在单独的包中匹配这些路径?
谢谢,
go - Gorilla Mux 处理 curl 请求
我想使用 Gorilla mux 来处理 api 请求。
命令将类似于:
卷曲http://0.0.0.0:8000/api/myapiname/v1?number=10&target=google.com&message=hello
我正在与以下处理程序一起服务:
但是对于curl请求,我只得到numbernottarget和message's的形式值
使用 Gorilla mux 处理 api 请求的正确方法是什么?我需要子路由吗?
我只想接收任何形式的http请求http://0.0.0.0:8000/api/myapiname/v1?number=10&target=google.com&message=hello并能够将其键映射到值
谢谢!