构建RESTful API的13种最佳实践

翻译:Eolinker 来源:www.eolinker.com Facebook、GitHub、Google以及其他许多巨头都需要一种服务和消费数据的方式。在当今的开发环境中,RESTful API仍然是服务和消费数据的最佳选择之一。 但是你是否考虑过学习行业标准?设计RESTful API的最佳实践是什么?从理论上讲,任何人都可以在不到五分钟的时间内快速启动数据API——无论是Node.js,Golang还是Python。 我们将探讨在构建RESTful API时应考虑的13种最佳实践。 什么...阅读全文

简书 2020-12-23 20:32:41 隔壁汪书

基于Gin的golang web开发增删改查实战(TodoList)

说明 1、目的是练习golang基于gin+gorm的web开发涉及到的最基本的增删改查,所以关于数据库连接和对应配置从配置文件的读取没有详细说明 如果想了解配置文件解析和读取可以参考: Golang加载yaml类型配置文件问题 2、为了方便演示,所有的代码都在同一个文件todo.go中,没有做项目目录的划分,关于项目目录划分后续文章介绍 3、为了保证http handle 逻辑和 实际model的正删改查不混在一起,所以这里定义了 service和handler service 是 model...阅读全文

简书 2020-12-23 20:32:40 全栈运维

xxl-job-executor的gin中间件

# xxl-job-executor的gin中间件 ## 背景 xxl-job-executor-go是xxl-job的golang执行器,可以独立运行,有时候我们要与项目或者框架(如:gin框架)集成起来合并为一个服务,本项目因此而生。 ## 执行器项目地址 https://github.com/xxl-job/xxl-job-executor-go ## 与gin集成示例 ```go package main import ( "github.com/gin-goni...阅读全文

Go语言中文网 2020-12-23 19:45:05 rushui

Golang channel 使用指南

基本介绍通道(chan)是goroutine之间传递特定值的通信机制。它属于通信顺序进程并发模式(Communicating sequential processes,CSP)。go语言中还有另一种并发模式,即共享内存多线程的传统模型。三种类型划分接下来讨论chan的不同类型,从三个角度去分析:缓冲/非缓冲(buffered/unbuffered)chan是一个有长度的容器,通过对长度的限定,可以定义不同类型的通道。对于声明长度的chan,称之为缓冲通道ch := make(chan int, ...阅读全文

Segmentfault 2020-12-27 13:32:33 mjlzz

wasm runtime 性能测试

上一篇文章分享了wasmer runtime,编译好的openssl.wasm文件可以独立运行,这篇文章分享openssl.wasm和原生openssl之间的性能对比。测试硬件主机 MacBook ProCPU 6-Core Intel Core i7 2.2 GHz/启动超线程内存 16GB磁盘 SSD测试软件Openssl LibreSSL 2.8.3Openssl WASM openssl安装包版本 openssl 1.1.1dWASMER 1.0.0-alpha4测试方法分别对 100/...阅读全文

Segmentfault 2020-12-27 09:32:33 Netwarps

大话后端开发的奇淫技巧(二)

从事服务端工作,已经有大几年了,从懵懂的小菜鸡,成长为可以自由飞翔的秃鹰,那些逝去青春和的头发见证了自己的成长 或许,这就是高手的应该有样子吧 头秃图 这里将会把类似的问题/业务场景的解决方案中,提炼出相对通用的部分,作为经验进行梳理罗列出来,共勉 幂等 业务场景: 用户多次点击按钮,或者因为设备的性能问题,连接的网络问题,点击按钮没反应,用户就会继续尝试点击,导致触发多次请求提交 解决方案: 客户端防重点击: 防重点击,只允许点击一次,通过记录按钮的状态值,控制按钮不可点击,等响应结果回来才能...阅读全文

简书 2020-12-23 10:32:47 SFLYQ

将 Docker 镜像体积减小 99%,骚操作来了

原文链接:http://www.msedt.com/infoflow/details/1085更多面试资源尽在:面试一点通msedt.com对于刚接触容器的人来说,他们很容易被自己构建的 Docker 镜像体积吓到,我只需要一个几 MB 的可执行文件而已,为何镜像的体积会达到1 GB以上?本文将会介绍几个奇技淫巧来帮助你精简镜像,同时又不牺牲开发人员和运维人员的操作便利性。本系列文章将分为三个部分:第一部分着重介绍多阶段构建(multi-stage builds),因为这是镜像精简之路至关重要的...阅读全文

简书 2020-12-23 01:32:40 酷娃利息对比计算

Golang垃圾回收机制

参考链接: Python中的屏障对象Barrier Objects什么是垃圾回收 曾几何时,内存管理是程序员开发应用的一大难题。传统的系统级编程语言(主要指C/C++)中,程序员必须对内存小心的进行管理操作,控制内存的申请及释放。稍有不慎,就可能产生内存泄露问题,这种问题不易发现并且难以定位,一直成为困扰开发者的噩梦。如何解决这个头疼的问题呢?过去一般采用两种办法: 内存泄露检测工具。这种工具的原理一般是静态代码扫描,通过扫描程序检测可能出现内存泄露的代码段。然而检测工具难免有疏漏和不足,只能起...阅读全文

51CTO博客 2020-12-22 09:25:40 wx57f63dceec388

Go语言基础(3)

Go语言基础(3) Go语言的并发通过goroutine实现。goroutine类似于线程,属于用户态的线程,可以根据需要创建成千上万个goroutine并发工作。goroutine是由Go语言的运行时(runtime)调度完成,而线程是由操作系统调度完成。 Go语言还提供channel在多个goroutine间进行通信。goroutine和channel是 Go 语言秉承的 CSP(Communicating Sequential Process)并发模式的重要实现基础 Go语言中的gorou...阅读全文

51CTO博客 2020-12-22 10:19:28 Meteor_hy