草庐IT

api接口

全部标签

go - 返回接口(interface)时的类型断言

我是golang的新手;然而,根据我目前的知识,我知道value-type和reference-type都可以实现一个接口(interface)。但就类型断言而言,返回结构的方式似乎很重要。请参阅以下内容:packagemainimport("fmt")typeSomeErrorinterface{Error()string}typeConcreteErrorstruct{}func(ConcreteError)Error()string{return"?"}funcreturnPointer()SomeError{return&ConcreteError{}}funcreturnVa

go - 找不到包 "api/handlers"

好的,这个问题之前已经有人问过,我相信我已经查看了所有这些问题并测试了答案,但我将解释每个问题为何与我的情况不符。我可能错过了其中一个的答案,但我阅读了每一个并试图看看它是否适合我的情况Howtoimportlocalpackagesingo?我相信我的导入遵循答案的结构Gobuild:"Cannotfindpackage"(eventhoughGOPATHisset)我不确定这个是否完全相关,但我认为这不是同一个错误。Golang-Whycan'tIimportlocalpackageinGOPATH/src/projectbutcaninhomedirectory?我的导入路径不是

unit-testing - 在 golang 中模拟远程 api 调用

我正在尝试更好地编写调用远程api的模拟golang测试我可以使用httptest库很容易地模拟单个调用,但我是在处理多次调用单个端点调用的其他函数时卡住了。例如给定一个简单的创建函数funccreateItem(urlstring,productProduct)(int,error){//makerequestreturncreatedId,nil}我可以写一些像这样的测试funcTestCreateItem(t*testing.T){mock_ts:=httptest.NewServer(http.HandlerFunc(func(whttp.ResponseWriter,r*ht

REST api 返回的 json 自动按升序排序

当我返回员工的json时,我正在使用golang构建RESTapi{"data":{"10":{"1517616000":[1000]},"15":{"1517616000":[1200]},"29":{"1517616000":[1200]},"42":{"1517616000":[1200]}}}它应该以42、15、29、10的顺序显示,因为我正在使用优先级参数对数据进行排序。当我检查控制台时,它显示正确的输出但不是在postman和浏览器上使用下面的函数返回jsonc.JSON(200,gin.H{"status":response,}) 最佳答案

go - 接口(interface)与结构方法

我有接口(interface)代码:packagemainimport("math""fmt")typeCirclestruct{x,y,rfloat64}typeRectanglestruct{x1,y1,x2,y2float64}typeFigureinterface{Area()float64}func(c*Circle)Area()float64{returnmath.Pi*c.r*c.r}func(r*Rectangle)Area()float64{returnmath.Abs(r.x2-r.x1)*math.Abs(r.y2-r.y1)}funcmain(){figures

go - 根据具有 map[string] 接口(interface)项的值对 slice 进行排序

修改后真实情况与示例数据略有不同。我有一个表,其中包含与我在应用程序中使用的用户界面相关的所有字段和属性。我需要一个按listorder排序的简单slice,它只有这样的字段名称列表。colons=[]string{'id','name','population','phonecode'}但数据源是一个slice,由map[string]interface{}值组成,这些值来自这样的sql查询selectfieldname,label,listorderfromtablefieldswheretablename="city"orderbyfieldnamefields:=[]map[s

go - 使用 gin 包在 golang 中实现 JWT 中间件并保护其他 API?

我想保护我的API,以便授权用户可以访问我的API。这里的路由器如下:-Router.go//herethecustomerwillregister.Route{"SaveUser","POST","/signup",controller.SaveUser},//herethecustomerwillloginwithitsusernameandpassword.Route{"LoginUser","POST","/login",controller.Login},//APIsthatavalidusercanaccessRoute{"SaveCustomers","POST","/c

go - 如何在 REST API 中管理映射模型

我有一个RESTAPI,对于每个响应,我需要将我的核心模型映射到我将在REST服务中公开的模型。我想给模型命名,比如:packagemaintypeUserstruct{NamestringPasswordstring}以及我想在我的API中公开的用户结构:typeUserstruct{Namestring}我该如何组织我的代码,以免出现名称冲突,因为当我尝试这样做时会出现错误:previousdeclarationat如果我将我的API结构的包更改为:packageapitypeUserstruct{...}我得到另一个错误can'tloadpackage:package...fou

go - 将空接口(interface)转换为 Golang 中的等效类型

将动态接口(interface)转换为其等效类型。例如,如果值是int,它应该返回int,如果是string,那么它应该返回int。代码示例:varoptions=bson.M{}for_,val:=rangeconditions{varattr,operator,valueinterface{}cons:=val.(map[interface{}]interface{})forrangecons{attr=cons["attribute"]operator=cons["operator"]value=cons["value"]switchoperator{case"==":opera

go - 如何在使用 golang 中现有接口(interface)的同时添加更多功能?

假设我有一个接口(interface)Foo,我正在添加一个结构,它需要Foo的方法和一些额外的方法。在那种情况下,以下两个被认为是最佳实践?或者如果有其他更合适的第三种方式,请提出建议。方法一typeFoointerface{methodA()}typeBarstruct{}func(bBar)methodA(){...}func(bBar)methodB(){...}方法二typeFoointerface{methodA()}typeBarstruct{Foo//thiscanbeinitializedwithanyconcreteimplementationofFoo}func(