亚洲 国产精品 日韩-亚洲 激情-亚洲 欧美 91-亚洲 欧美 成人日韩-青青青草视频在线观看-青青青草影院

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

手機站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時隨地免費學(xué)

千鋒教育

掃一掃進入千鋒手機站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時隨地免費學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > 一行代碼實現(xiàn)一個RESTful接口

一行代碼實現(xiàn)一個RESTful接口

來源:千鋒教育
發(fā)布人:syq
時間: 2022-09-23 11:24:00 1663903440

  背景

  基于現(xiàn)在微服務(wù)或者服務(wù)化的思想,我們大部分的業(yè)務(wù)邏輯處理函數(shù)都是長這樣的:

  比如grpc服務(wù)端:

1

  grpc客戶端:

2

  有些服務(wù)我們需要把它包裝為RESTful形式的接口,一般需要經(jīng)歷以下步驟:

  指定HTTP方法、URL

  鑒權(quán)

  參數(shù)綁定

  處理請求

  處理響應(yīng)

  可以發(fā)現(xiàn),參數(shù)綁定、處理響應(yīng)幾乎都是一樣模板代碼,鑒權(quán)也基本上是模板代碼(當(dāng)然有些鑒權(quán)可能比較復(fù)雜)。

  而Ginrest庫就是為了消除這些模板代碼,它不是一個復(fù)雜的框架,只是一個簡單的庫,輔助處理這些重復(fù)的事情,為了實現(xiàn)這個能力使用了Go1.18的泛型。

  特性

  這個庫提供以下特性:

  封裝RESTful請求響應(yīng)

  封裝RESTful請求為標(biāo)準(zhǔn)格式服務(wù)

  封裝標(biāo)準(zhǔn)格式服務(wù)處理結(jié)果為標(biāo)準(zhǔn)RESTful響應(yīng)格式:Rsp{code, msg, data}

  默認(rèn)使用統(tǒng)一數(shù)字錯誤碼格式:[0, 4XXXX, 5XXXX]

  默認(rèn)使用標(biāo)準(zhǔn)錯誤格式:Error{code, msg}

  默認(rèn)統(tǒng)一狀態(tài)碼[200, 400, 500]

  提供Recovery中間件,統(tǒng)一panic時的響應(yīng)格式

  提供SetKey()、GetKey()方法,用于存儲請求上下文(泛型)

  提供ReqFunc(),用于設(shè)置Req(泛型)

  使用例子

  首先我們實現(xiàn)兩個簡單的服務(wù):

3

  然后使用Gin+Ginrest包裝為RESTful接口:

  可以看到Register()里面每個接口都只需要一行代碼!

4

  運行上面代碼,然后嘗試訪問接口,可以看到返回結(jié)果:

5

  實現(xiàn)原理

  Do()和DoOpt()都會轉(zhuǎn)發(fā)到do(),它其實是一個模板函數(shù),把臟活累活給處理了:

6

  功能列表

  處理請求

  用于把一個標(biāo)準(zhǔn)服務(wù)封裝為一個RESTfulgin.HandlerFunc,對應(yīng)Do()、DoOpt()函數(shù)。

  DoOpt()相比于Do()多了一個opts參數(shù),因為很多rpc框架客戶端都有一個opts參數(shù)作為結(jié)尾。

  還有一個BindJSON(),用于把請求體包裝為一個Req結(jié)構(gòu)體:

7

  如果無法使用Do()和DoOpt()則可以使用此方法。

  處理響應(yīng)

  用于把rsp、error、errcode、errmsg等數(shù)據(jù)封裝為一個JSON格式響應(yīng)體,對應(yīng)ProcessRsp()、Success()、Failure()、FailureCodeMsg()函數(shù)。

  比如ProcessRsp()需要帶上rsp和error,這樣業(yè)務(wù)里面就不需要再寫如下模板代碼了:

8

  響應(yīng)格式統(tǒng)一為:

9

  Success()用于處理成功情況:

10

  其余同理。

  如果無法使用Do()和DoOpt()則可以使用這些方法。

  處理錯誤

  一般我們都需要在出錯時帶上一個業(yè)務(wù)錯誤碼,方便客戶端處理。因此我們需要提供一個合適的error類型:

11

  我們提供了一些函數(shù)方便使用Error,對應(yīng)NewError()、ToError()、ErrCode()、ErrMsg()、ErrEqual()函數(shù)。

  比如NewError()生成一個Error類型error:

12

  請求上下文操作

  Gin的請求是鏈?zhǔn)教幚淼模簿褪嵌鄠€handler順序的處理一個請求,比如:

13

  這個接口經(jīng)歷了Verify和ginrest.Do兩個handler,其中我們在Verify的時候通過認(rèn)證知道了用戶的身份信息(比如uid),我們希望把這個uid存起來,這樣可以在業(yè)務(wù)邏輯里使用。

  因此我們提供了SetKey()、GetKey()兩個函數(shù),用于存儲請求上下文:

  比如認(rèn)證通過后我們可以設(shè)置UID到上下文,然后在reqFunc()里讀取設(shè)置到req里面(下面介紹)。

14

  請求結(jié)構(gòu)體處理

  上面我們設(shè)置了請求上下文,比如UID,但是其實我們并不知道具體這個UID是需要設(shè)置到req里的哪個字段,因此我們提供了一個回調(diào)函數(shù)ReqFunc(),用于設(shè)置Req:

15

  

  如果這個庫的設(shè)計不符合具體的業(yè)務(wù),也可以按照這種思路去封裝一個類似的庫,只要盡可能的統(tǒng)一請求、響應(yīng)的格式,就可以減少很多重復(fù)的模板代碼。

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
免費領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
大數(shù)據(jù)測試工程師需要具備哪些技能?

一、理解大數(shù)據(jù)概念大數(shù)據(jù)測試工程師需要理解大數(shù)據(jù)的基本概念和原理,如分布式存儲、MapReduce、實時計算等。他們還需要了解如何處理大規(guī)模的...詳情>>

2023-10-14 23:43:03
為什么SpringBoot的 jar 可以直接運行?

一、JAR文件的結(jié)構(gòu)與執(zhí)行方式Spring Boot的JAR包是Java Archive的縮寫,它是一種壓縮文件格式,可以將Java項目的類文件、資源文件以及依賴庫等...詳情>>

2023-10-14 23:01:49
站群服務(wù)器是什么?

站群服務(wù)器的含義與用途站群服務(wù)器主要用于支持站群,即由一組相互鏈接的網(wǎng)站組成的群體。這些網(wǎng)站通常由同一組織或個人擁有,并且經(jīng)常會互相鏈...詳情>>

2023-10-14 22:46:12
自編碼器是什么?

一、自編碼器原理自編碼器的設(shè)計靈感源于神經(jīng)科學(xué)中關(guān)于感知系統(tǒng)的認(rèn)知原理,它的核心思想是將輸入數(shù)據(jù)經(jīng)過編碼過程,形成一個隱藏層的特征表示...詳情>>

2023-10-14 22:41:10
什么是云網(wǎng)融合?

一、云網(wǎng)融合的定義云網(wǎng)融合是指將云計算與網(wǎng)絡(luò)技術(shù)相結(jié)合,實現(xiàn)資源的共享、業(yè)務(wù)的協(xié)同,將網(wǎng)絡(luò)與云端服務(wù)深度融合,提供更靈活、高效、安全的...詳情>>

2023-10-14 22:31:47
人人妻人人澡人人爽人人DVD| 蜜臀AV网站在线| 免费看的WWW哔哩哔哩小说| 人人爽人人模人人人爽人人爱| 色五月丁香五月综合五月亚洲| 性无码一区二区三区在线观看| 亚洲一区精品无码色成人| 99久久国产自偷自偷免费一区| 成年女人18毛片毛片免费不卡| 国产看黄网站又黄又爽又色| 久久精品人人做人人爽老司机| 欧美色欧美亚洲高清在线观看| 我和大佬的365天| 亚洲中文字幕爆乳人妻| とらぶるだいありぴーち在线| 2021亚洲爆乳无码专区| 老少配XXOO老少配| 果冻传媒剧国产剧在线看| 野花影视大全在线西瓜在线播放 | 欧美一卡二卡三卡四卡视| 没带罩子让他捏了一节课| 久久久97精品国产一区蜜桃| 精品久久久久久中文字幕人妻最新| 国产精品无码一区二区三区电影 | 亚洲一区二区三区蜜桃| av网站免费观看| 国产日产欧产精品精品APP| 美丽的小蜜桃伦理美国| 天堂А√中文在线官网| 岳打开双腿开始配合交换 | 精品无码一区二区三区电影| 人妻无奈被迫屈辱1-9| 亚洲国产精品一区二区第一页| H无码精品动漫在线观看导航| 国产无遮挡又黄又大又爽| 女人扒开屁股桶爽6O分钟| 性CHINESE新婚VIDEO| AV狠狠色超碰丁香婷婷综合久久| 国产欧美久久久精品影院| 欧美成人免费观看在线看| 亚洲AV成人一区二区三区| FREE嫩白18SEX性HD处| 黑人人妻AV一区二区三| 日本精品一线二线三线区别在哪里| 亚洲精品无码成人片久久不卡 | 又爽又黄又无遮挡网站| 国产精品久久久久久一区二区三区 | 日韩人妻无码精品一专区| 亚洲中文字幕无码久久2017 | 上面一个摸下面一个手念什么| 一区二区三区AV在线| 国产成人无码精品久久二区三区| 美女把腿扒开让我添视频| 性少妇JEAⅠOUSVU片| 锕锕锕锕锕锕锕锕好疼动免费| 精品人妻系列无码人妻不卡 | 国产精品xxxxav| 欧美美女多人群交视频| 亚洲精品国产AV天美传媒| 丰满少妇大叫太大太粗| 男女啪啪无遮挡免费网站| 亚洲国产成人片在线观看无码| 东北少妇高潮流白浆在线观看| 麻花传媒MV一二三区别在哪里看| 亚洲AV 无码片一区二区三区| 成 人 综合 亚洲另类| 蜜桃久久精品成人无码AV| 亚洲AV永久纯肉无码精品wwt| 大胆人体艺术视频| 免费无码的AV片在线观看| 亚洲精品四区麻豆文化传媒| 国产成人无码A区在线| 青草国产超碰人人添人人碱| 有人有在线观看的片吗WWW| 国内美女推油按摩在线播放 | 一本到高清视频在线观看丶| 国产三级无码内射在线看| 涩爱AV挺进少妇张开双暴躁| HD专干中国老太婆| 美女高潮无套内谢| 亚洲欧美日本A∨在线观看| 国产精品原创巨作AV女教师 | 欧美丰满美乳XXⅩ高潮WWW| 亚洲无码一区二区三区| 国产在线内射婷婷| 无码纯肉视频在线观看| 成人毛片女18免费| 秋霞无码AⅤ一区二区三区| 中文字幕肉感巨大的乳专区| 久久久久久久精品国产免费…| 亚洲AV一二三又爽又色又色| 国产精品三级AV三级AV三级| 熟妇人妻中文AV无码| 超清少妇爆乳无码av无码专区 | YY111111少妇影院无码| 男女差差差差差打扑克视频| 一級黃色毛片免費看| 久久国产AVJUST麻豆| 亚洲成人免费AV| 国内精品久久久久久久久齐齐 | 国产亚洲欧美在线专区 | 我和岳M愉情XXXX| 大屁股熟女一区二区三区| 人与性动交ⅩXXXB| 锕锕锕锕锕锕锕轻点好痛免费| 欧美VA亚洲VA在线观看| 51国产偷自视频区视频| 妺妺和我裸睡玩我下春雨医生| 在线视频一区二区三区| 久久永久免费人妻精品我不卡| 野花ぶるだいあり~しすWWW| 精品无码久久久久久国产| 亚洲精品成人网站在线| 娇小性XXXX摘花HD| 亚洲乱码在线卡一卡二卡新区 | 无码A级毛片视频| 国产精品香蕉在线观看网| 无码AV中文字幕久久专区| 国产精品美女乱子伦高潮| 无码午夜人妻一区二区不卡视频| 国产精品亚洲А∨天堂2021| 午夜成人爽爽爽视频在线观看| 国产色无码精品视频国产| 亚洲AV无码精品网站| 激情内射亚洲一区二区三区爱妻| 亚洲爆乳成AV人在线蜜芽| 狠狠综合久久综合88亚洲| 亚洲欧美日韩精品久久亚洲区| 久久99精品国产99久久6尤物 | 午夜性影院爽爽爽爽爽爽| 国产专区一线二线三线品牌东| 亚洲成a人片在线观看无码专区| 精品欧美黑人一区二区三区| 亚洲色成人网站www观看入口| 久久久久精品波多野吉衣无码AV | 亚洲成人AV免费| 久久人与动人物A级毛片| 中文字幕日本乱码仑区在线| 欧美精品黑人成人另类视频| 被黑人的大JJ干得很舒服吗| 熟妇人妻不卡无码一区| 国产日产欧美一区二区蜜桃| 亚洲国产中文在线二区三区免| 久久九九久精品国产综合一千收藏| 又大又长粗又爽又黄少妇视频| 女人来高潮水多视频| 边做边爱边吃奶叫床的动态图| 双腿高潮抽搐喷白浆视频| 国产熟女老妇300部MP4| 亚洲丰满少妇XXXXⅩ高潮| 久久熟妇人妻午夜寂寞影院| BGMBGMBGM老头野外| 日韩一区国产二区欧美三区| 国产乱人伦中文无无码视频试看| 亚洲精品成A人在线观看| 久久夜色撩人精品国产小说| A级黑粗大硬长爽 猛视频,| 日本熟妇XXⅩ浓密黑毛| 国产精品午夜福利不卡| 亚洲影院丰满少妇中文字幕无码| 欧美丰满熟妇XXXX| 国产成人无码AⅤ片在线观看| 亚洲国产精品第一区二区三区| 老熟女HDXX中国老熟女| 苍井空无码免费换线| 亚洲 A V无 码免 费 成| 浪潮AV一区二区三区| 成人毛片无码一区二区| 亚洲AV玩弄放荡人妇系列| 美女裸体无遮挡永久免费视频AP | 涩爱AV挺进少妇张开双暴躁| 叫吧宝贝我想听你叫什么| 2014AV天堂网| 偷看自己婆给别人玩经过 | 亚洲最大的av网站| 人妻少妇中文字幕久久| 国精产品999国精产品官网| 中文天堂在线WWW最新版官网| 日韩人妻中文无码一区二区| 精品成人一区二区三区四区| 99视频国产精品免费观看| 污污内射久久一区二区欧美日韩 | 熟女体下毛毛黑森林| 久久国产成人精品国产成人亚洲| www啪啪小白浆内射无码| 性色AV无码中文AV有码VR| 妺妺窝人体色WWW在线图片| 国产精品xxxxav| 又色又爽又黄18禁美女裸身无遮| 人与动人物XXXXAV片| 精品国产乱码久久久久久郑州公司 | 中文无码字幕中文有码字幕| 天堂在\/线中文官网| 久久久亚洲欧洲日产国码农村| 成熟交BGMBGMBGM图片| 亚洲伊人成无码综合网| 色一情一乱一伦一视频免费看| 久久久久亚洲AV成人无码网站 | 欧美丰满美乳XXⅩ高潮| 果冻国产精品麻豆成人AV电影|