因为业务需要想搞一个全局的拦截器,因为现有的框架在laravel基础上搞了个架子,业务代码和路由全在vendor目录不受git管理,这时候就想到全局中间件了。
操作如下:
1、在app/Http/Middleware目录下加一个中间件,当然也可以直接用命令行生成,暂且叫TestMiddleware.php吧。
2、TestMiddleware必须继承Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode。
3、需要在app/Http/Middleware/Kernel.php中的 $middleware 数组里面调用一下\App\Http\Middleware\TestMiddleware::class。
TestMiddleware.php代码如下:
<?phpnamespace App\Http\Middleware;Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode as BaseMiddleware;use Closure;class TestMiddleware extends BaseMiddleware{ public function handle($request, Closure $next) { //要执行的操作 return $next($request); }}app/Http/Middleware/Kernel.php代码如下:
<?phpnamespace App\Http;use Illuminate\Foundation\Http\Kernel as HttpKernel;class Kernel extends HttpKernel{ /** * The application's global HTTP middleware stack. * * These middleware are run during every request to your application. * * @var array */ protected $middleware = [ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, \App\Http\Middleware\TrustProxies::class, \App\Http\Middleware\TestMiddleware::class, ]; .................其他代码.......................测试了一下是可行的。然鹅后面发现其实这个架子有提供配置中间件的地方,只要自己写个路由中间价再把自定义的中间件名称加进去就可以了[裂开]!
beego 返回json小写字母
2021-12-07
由于golang语言有个奇葩feature:在结构体中申明的字段名首字母大写为公开字段,小写为私有字段。这样导致了beego调用ServeJSON()方法返回json数据的时候字段都是首字母大写的,显得不灵活。那我就想统一返回小写的json字段,下面是具体操作:
### 在申明结构体字段的时候加`json:"自定义的字段名"`type Payload struct { Code int `json:"code"` Data string `json:"result"` Msg string `json:"message"`}### 自定义字段后可以按自己的需求返回json了
Golang编译的时候遇到 fatal: git fetch-pack: expected shallow list_onlyellow
2021-12-07
最近在用go语言写demo,用的beego框架。在编译的时候报错git fetch-pack: expected shallow list_onlyellow,乍看之下是git fetch出错。网上一查排名靠前的全是恶心的csdn结果,然后告诉你是git版本或者golang版本过低叫你去升级,内容千篇一律还全是弹窗广告。没错,去谷歌搜索csdn的结果也是排前面的,stackoverflow上没多少结果,可能大佬都不会遇到这种白痴问题?
仔细排查了下原因我发现其实是服务器上的go环境配置问题,echo $GOPATH 是空的。重新配置了一下环境变量再go install一下编译就正常了。
环境变量的配置一般过新手教程的时候肯定都走了一遍,为了凑字数下面再说下吧。
这个是centos下的,win下面太简单就不赘述了。
###### 先是安装golang并且找到go安装目录。(编译安装自行看教程折腾,这里是yum安装)### 安装golang# yum install golang -y ### 查看golang版本,现在一般都是1.15起步,系统源golang版本低可以自行更新源或者直接去官网下源码编译# go version ### 查看go环境变量 # go env### GOROOT和GOPATH如果有为空的情况就需要自己配置下,一般export 变量=变量的值,比如我PC上的go安装目录是/usr/local/go, 那么直接export GOROOT=/usr/local/go就可以了。要一直生效的话可以把export追加到/etc/profile文件最后,例如:export GOROOT=/usr/local/goexport PATH=$GOROOT/bin:$PATHexport GOPATH=/home/jojo/go### 最后要让配置立即生效 # source /etc/profile### ps: jojo是我的个人目录,GOPATH是自己设置的工作目录
苹果apple store回调通知
2021-12-02
前段时间测试填了个苹果回调地址,因为没用到就没太注意。最近做调试的时候发现回调的内容是base64加密的,采用的jws标准。
翻了下文档还是写得很清楚的,就是解析完发现里面只有交易ID没有订单号,也对应不上用户ID不知道是谁下的单。刚接触苹果支付感觉是和国内的支付有很大的区别。