The Go Programming Language
› http://golang.org/
› Go Playground
Go Projects
› Revel Web Framework
chrislon

用 golang 写 http JSON 接口的同学可以试试这个迷你库

  •  
  •   chrislon · Sep 12, 2016 · 3829 views
    This topic created in 3705 days ago, the information mentioned may be changed or developed.

    主要是用 nex.Handler 把一个处理业务逻辑的 Endpoint 转成一个符合 http.Handler 接口的结构, 在请求过来的时候自动将 Request.Body 的内容 Unmarshl 为 golang 的结构, 函数返回时自动将返回的结果 Marshal 为 JSON 结构, 传回客户端.

    Talk is cheap, show you the code.

    package main
    
    import (
        "errors"
        "fmt"
        "net/http"
    
        "github.com/chrislonng/nex"
    )
    
    type LoginRequest struct {
        Username string `json:"username"`
        Password string `json:"password"`
    }
    
    type LoginResponse struct {
        Result string `json:"result"`
    }
    
    type ErrorMessage struct {
        Code  int    `json:"code"`
        Error string `json:"error"`
    }
    
    func main() {
        // customize error encoder
        nex.SetErrorEncoder(func(err error) interface{} {
            return &ErrorMessage{Code: -1, Error: err.Error()}
        })
    
        mux := http.NewServeMux()
        mux.Handle("/test1", nex.Handler(test1))
        mux.Handle("/test2", nex.Handler(test2))
    
        http.ListenAndServe(":8080", mux)
    }
    
    // regular response
    func test1(m *LoginRequest) (*LoginResponse, error) {
        fmt.Printf("%+v\n", m)
        return &LoginResponse{Result: "success"}, nil
    }
    
    // error response
    func test2(m *LoginRequest) (*LoginResponse, error) {
        fmt.Printf("%+v\n", m)
        return nil, errors.New("error test")
    }
    

    觉得有用就 Star 一下吧

    传送门: https://github.com/chrislonng/nex

    27 replies  •  2016-09-13 09:19:07 +08:00
    BMW
    BMW
    Sep 12, 2016
    1
    妹子,你还需要自己动手写代码?
    magicdawn
    magicdawn
    Sep 12, 2016
    2
    楼主估计用的女神头像
    chrislon
    chrislon
    OP
    Sep 12, 2016
    3
    @magicdawn 前女友
    bingoAI
    bingoAI
    Sep 12, 2016
    4
    现任看到会是什么感觉?
    hansnow
    hansnow
    Sep 12, 2016
    5
    已经没人关注楼主写的东西了,楼主,讲出你头像的故事吧
    Lucius
    Lucius
    Sep 12, 2016
    6
    你就是我女朋友的前任啊? 世界真小

    子湄是个好姑娘,我会替你照顾好她的


    Lucius
    Lucius
    Sep 12, 2016
    8
    @taresky 你发我女朋友微博干啥? 请保护他人的隐私
    Lonely
    Lonely
    Sep 12, 2016 via iPhone
    9
    楼这么快就歪了
    xAx
    xAx
    Sep 12, 2016
    10
    一帮程序员屌丝又在盗图吹女友了
    xAx
    xAx
    Sep 12, 2016
    11
    https://www.google.com/search?tbs=sbi:AMhZZit8tufyJwAu_1v7TnT-mt0K5SVmcA4qPXU4sh7o7H-vT4qecU1iEZc6fOJ2UUgdnjePAraPbPXGh31i78bqZP34YDie8DLzRF0qoA2BGW6XQzXZqeGDqvkd09Q0WHyPVspT2ok_1PGhMyY60ifGyiWNa4niXp_1y2sNuGMGjua39OsWJFJT3pLAOXYtTsOcjVVZ_1rq7VTEO5Dm2rYgENjCP3t25dWtDPaihVZPbjkUogbZGhEhSUCdhej5fNXloRkdCTsay9VTLjogh7yrjAFHJ8GA3-SJQXf8g2O2e6KaBh0mx-XJGGL4Qh-ypHDH-UgNM8r_1DctUClExuKS7ayuyBghdvqnxrmTmEV6wOpxqEWHWdFRErgwyeBMEn6xhbCRTpGj_1fy4CmxQcyB0GnW8CoxpnAgSaxTR95vJp3ppWI3hqkZeQ2I8jrG_1gywDN_187yccu41ZbpTqWu2zD7mJTLv1qI5KnCT_1-WRnBAlUQML8LpcLx3X_1zqOzjtEs7iKpRIY89aAQDR4EOYniNQPAVC_1EeFmM_1s_1AijifFMxR7QzWdv94_16gM_17jo6QVd2zb4vnpV73cMD-NhNvaogKq11vAOIAjrZxTmMRire_1R-Rdb0cWvLRDW1diR_1XWNETx1xCjfls66WfSts0cOaHrOgGOVmKevARWGg6ce5GjHyGqRCVfvGB4wupRZNUeCWsiOTKE7Ye5s0yFykuk4to8PqyrXuu3O_1RTZAqZ94jORztkiiJRZ97sTNeemp1CNOrlnOs5g7Df-qcKCRKXu2exBo1JV6ZN_1tU7yThnmaVW_1XXXtVZaDY4IiS6h9WP-0Y-4MKxoRkRwdwqRkN34z7DmOQADg2mF3rrlg_1JSFN3p43kmNS3d2XrqBdrLWl_103BZ12_1J0P_1lnfFL5Y4MC8VGkIrIidt77baoUP2DBGsUuWypsLm_1EG7uozT38IA9WXE6MSmoRS6zxhhOxgJMefn_1Lg-2xvtoteSIQKAOIMq7O915sEhe3-tIG1cT4F7tOVibj1zvHxxKcNC_1xW4K8o-hmclN88r1woJOxzt1XMYweUwICqLmdvVItZqUVqDCAxdbk9FjnIANIB5iZu63yqs8FStNKP8SYClkxOcPpaYymEeH-ecqi7DkHSYri6QRzbUqYvrLr7HA0vYkH7nAaph-FSdKCPN8GpR8itHk20B09E1nVrj-rS1jOLnPNwLxhA686vzRLv43z0vGFUqbMyxFGzrpTimJe9kFzcE2FuJi7b56QyZk2BwMSe9TLVP96jNJx0sfBk6cdtRXXl-UJsWa1sRUIlk2sdaN5kBqahmXkkfxS5n0UpGaqvc_1igeCLqN1iu-g_1NNft3VKz8ACT-xqQmaimPDTTfZ4l2ENCUlMj3Qyb2NEapTt_1sXYKO7JWUJYuVUKj_1LmfmEdyc680q9W3Oo9M-am3HVXYxCnxJ2L_1QPL9qqq3EtY0pG-DFBuRNPFPzuz0mnB4EBX6SjLDoP8eAIV3_1hvHrzNjrwK6zyGV35bgCnnm2YktMfS-QFDRQ3sNgMzEW_1gnNjwpIY2dzpNdqF9FRjpP33V7BhEjXhKh2orIgyV6q2eXu5QhF78nhvaxErDfqYAVlLEIYvMjpP6Gxjvuet_11E7Ckk-hGIoNpoRBp_1NoLbtUNFo5zDRZCCZahCyAo9NUiMHXS&hl=zh-CN
    qcloud
    qcloud
    Sep 12, 2016❤️2
    12
    neoblackcap
    neoblackcap
    Sep 12, 2016
    13
    7 楼已经算对楼主好的了,之前我在百度里面看过扒皮扒得更惨的
    SourceMan
    SourceMan
    Sep 12, 2016
    14
    哟,好贴,赶紧收藏下,下午回来看
    Jakesoft
    Jakesoft
    Sep 12, 2016
    15
    好帖(tu), mark
    ICU
    ICU
    Sep 12, 2016
    16
    好强你们,话说是怎么根据图片翻出这么多信息的?
    pizida
    pizida
    Sep 12, 2016
    17
    百度识图,谷歌识图。
    楼主,我不是来拆台的...
    ebony0319
    ebony0319
    Sep 12, 2016
    18
    要不是看了 7 楼我就差点信了 6 楼。
    chrislon
    chrislon
    OP
    Sep 12, 2016
    20
    @Lucius 拜托了
    frozenshadow
    frozenshadow
    Sep 12, 2016
    21
    哈哈哈,这楼歪的可以啊。下班刷新再看看
    xylitolLin
    xylitolLin
    Sep 12, 2016
    22
    留名看戏
    chrislon
    chrislon
    OP
    Sep 12, 2016
    23
    换头像正楼
    aisk
    aisk
    Sep 12, 2016
    24
    楼主前女友哆啦 A 梦?黑人问好.gif
    frozenshadow
    frozenshadow
    Sep 12, 2016
    25
    @aisk 之前是六楼的妹子
    weaming
    weaming
    Sep 12, 2016
    26
    v2ex 要变发车场了吗
    Karblue
    Karblue
    Sep 13, 2016
    27
    来晚了吗。我要上车。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1399 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 75ms · UTC 22:49 · PVG 06:49 · LAX 14:49 · JFK 17:49
    ♥ Do have faith in what you're doing.