V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
chrislon

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

  •  
  •   chrislon · Sep 12, 2016 · 3285 views
    This topic created in 3514 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
        1
    BMW  
       Sep 12, 2016
    妹子,你还需要自己动手写代码?
    magicdawn
        2
    magicdawn  
       Sep 12, 2016
    楼主估计用的女神头像
    chrislon
        3
    chrislon  
    OP
       Sep 12, 2016
    @magicdawn 前女友
    jiangbingo
        4
    jiangbingo  
       Sep 12, 2016
    现任看到会是什么感觉?
    hansnow
        5
    hansnow  
       Sep 12, 2016
    已经没人关注楼主写的东西了,楼主,讲出你头像的故事吧
    Lucius
        6
    Lucius  
       Sep 12, 2016
    你就是我女朋友的前任啊? 世界真小

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


    taresky
        7
    taresky  
       Sep 12, 2016
    Lucius
        8
    Lucius  
       Sep 12, 2016
    @taresky 你发我女朋友微博干啥? 请保护他人的隐私
    Lonely
        9
    Lonely  
       Sep 12, 2016 via iPhone
    楼这么快就歪了
    xAx
        10
    xAx  
       Sep 12, 2016
    一帮程序员屌丝又在盗图吹女友了
    xAx
        11
    xAx  
       Sep 12, 2016
    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
        12
    qcloud  
       Sep 12, 2016   ❤️ 2
    neoblackcap
        13
    neoblackcap  
       Sep 12, 2016
    7 楼已经算对楼主好的了,之前我在百度里面看过扒皮扒得更惨的
    SourceMan
        14
    SourceMan  
       Sep 12, 2016
    哟,好贴,赶紧收藏下,下午回来看
    Jakesoft
        15
    Jakesoft  
       Sep 12, 2016
    好帖(tu), mark
    ICU
        16
    ICU  
       Sep 12, 2016
    好强你们,话说是怎么根据图片翻出这么多信息的?
    pizida
        17
    pizida  
       Sep 12, 2016
    百度识图,谷歌识图。
    楼主,我不是来拆台的...
    ebony0319
        18
    ebony0319  
       Sep 12, 2016
    要不是看了 7 楼我就差点信了 6 楼。
    god
        19
    god  
       Sep 12, 2016
    chrislon
        20
    chrislon  
    OP
       Sep 12, 2016
    @Lucius 拜托了
    frozenshadow
        21
    frozenshadow  
       Sep 12, 2016
    哈哈哈,这楼歪的可以啊。下班刷新再看看
    xylitolLin
        22
    xylitolLin  
       Sep 12, 2016
    留名看戏
    chrislon
        23
    chrislon  
    OP
       Sep 12, 2016
    换头像正楼
    aisk
        24
    aisk  
       Sep 12, 2016
    楼主前女友哆啦 A 梦?黑人问好.gif
    frozenshadow
        25
    frozenshadow  
       Sep 12, 2016
    @aisk 之前是六楼的妹子
    weaming
        26
    weaming  
       Sep 12, 2016
    v2ex 要变发车场了吗
    Karblue
        27
    Karblue  
       Sep 13, 2016
    来晚了吗。我要上车。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1470 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 77ms · UTC 23:58 · PVG 07:58 · LAX 16:58 · JFK 19:58
    ♥ Do have faith in what you're doing.