本文由go语言教程栏目给大家介绍如何使用 Go-Spring 构建最小 Web API ,希望对需要的朋友有所帮助!

前言

Go 语言以简单著称,一个很明显的例子就是只需要很少的代码即可实现一个最小的 Web API 。Go-Spring 融合了 Go 简单和 Spring 自动配置的优点。本文通过几个实现最小 Web API 的示例展示 Go-Spring 的简单和强大。

To Gopher

下面是使用 Go 标准库实现的 Hello World! 程序。代码真的很少!

package mainimport (
  "net/http")func main() {
  http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("Hello World!"))
  })
  http.ListenAndServe(":8080", nil)}

Gin 是目前最火的 Web 框架之一,它实现的 Hello World! 程序如下。也很简单。

package mainimport (
  "github.com/gin-gonic/gin"
  "github.com/gin-gonic/gin/ginS")func main() {
  ginS.GET("/", func(c *gin.Context) {
    c.String(200, "Hello World!")
  })
  ginS.Run()}

再来看看使用 Go-Spring 实现的 Hello World! 程序。同样很简单。

package mainimport (
  "github.com/go-spring/spring-core/gs"
  "github.com/go-spring/spring-core/web"
  _ "github.com/go-spring/starter-gin")func main() {
  gs.GetMapping("/", func(ctx web.Context) {
    ctx.String("Hello World!")
  })
  gs.Run()}

但是,可以注意到使用 Go-Spring 实现的示例中有一个匿名导入的包,它的作用是告诉 Hello World! 程序使用 Gin 作为底层 Web Server 实现。如果我们把这一行改为如下代码,程序仍然可以正常执行,但是这时候程序使用 Echo 作为底层 Web Server 实现。

_ "github.com/go-spring/starter-echo"

虽然 Go-Spring 多了一行匿名包导入,但因此获得了比标准库更强大的能力。

To Javaer

Go-Spring 虽然提供了和 Go 标准库一样的编程模型,但本质上它是基于 IoC (依赖注入) 实现的,因此它具有标准库不具备的自动配置能力,而且与 Java Spring Boot 相比,Go-Spring 的编程效率也不差。

下面是使用 Java Spring Boot 实现的一个 Hello World! 程序,但是与上面的示例不同,为了展示 Java Spring 的依赖注入能力,它同时会打印 JAVA_HOME 环境变量的值。代码如下。

package com.example.demo11;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerclass MyController {

  @Value("${JAVA_HOME}")
  String JavaHome;

  @GetMapping("/")
  public String hello() {
    return this.JavaHome + " - Hello World!";
  }}@SpringBootApplicationpublic class Demo11Application {

  public static void main(String[] args) {
    SpringApplication.run(Demo11Application.class, args);
  }}

下面是使用 Go-Spring 的依赖注入能力实现的能同时打印 GOPATH 环境变量和 Hello World! 的程序。代码如下。

package mainimport (
  "github.com/go-spring/spring-core/gs"
  "github.com/go-spring/spring-core/web"
  _ "github.com/go-spring/starter-gin")func init() {
  gs.Object(new(MyController)).Init(func(c *MyController) {
    gs.GetMapping("/", c.Hello)
  })}type MyController struct {
  GoPath string `value:"${GOPATH}"`}func (c *MyController) Hello(ctx web.Context) {
  ctx.String(c.GoPath + " - Hello World!")}func main() {
  gs.Run()}

比较上面两个示例,可以看出 Go-Spring 真正实现了 Go 和 Java Spring 的融合,在保持 Go (语法) 简单的同时具备 Java Spring 的强大配置能力。

通过本文的介绍,你有没有对 Go-Spring 动心呢?赶紧动手试试吧!

以上就是通过构建最小Web API来展示Go-Spring的强大的详细内容,更多请关注php中文网其它相关文章!

声明:本文转载于:learnku,如有侵犯,请联系admin@php.cn删除

  • 相关标签:go go-spring
  • 程序员必备接口测试调试工具:点击使用

    Apipost = Postman + Swagger + Mock + Jmeter

    Api设计、调试、文档、自动化测试工具

    网页生成APP,用做网站的技术去做APP:立即创建

    手机网站开发APP、自助封装APP、200+原生模块、2000+映射JS接口按需打包

    • 上一篇:快速解决go get golang.org/x 包不成功的问题
    • 下一篇:UPX怎么压缩Go的可执行文件

    相关文章

    相关视频


    • 通过go get拉取扩展发生报错怎么办?
    • 探讨go中的var是否能初始化结构体
    • 简析golang中rune类型
    • 快速解决go get golang.org/x 包...
    • 通过构建最小Web API来展示Go-Spring...
    • SSDB GO语言api文档
    • go语言介绍和环境搭建1
    • go语言介绍和环境搭建2

    视频教程分类

    • php视频教程
    • html视频教程
    • css视频教程
    • JS视频教程
    • jQuery视频教程
    • mysql视频教程
    • Linux视频教程
    • Python视频教程
    • Laravel视频教程
    • Vue视频教程

    专题

    通过构建最小Web API来展示Go-Spring的强大