avatar
统一账户管理系统RESTful api设计

统一账户管理系统RESTful api设计

星期五,四月 10 日,2015 年

LDAPAdmin, 为用户管理提供一组API,以HTTP-based RESTful API的形式提供服务,提供了对ldap数据的增删改查功能。主要用到了HTTP的四种方法:GET, POST, PUT和 DELETE。 下面主要对LDAPAdmin 的REST Api做个简单介绍: ##Functionality ###Terminology ###User stories 利用该组件的HTTP API,通过提交一组描述 用户/部门/系统/管理员的JSON数据,添加、删除、更新、查询数据; 利用该组件的HTTP API,可以方便的添加一条 用户/部门/系统/管理员记录; 利用该组件的HTTP API,可以方便的更新一条指定的 用户/部门/系统/管理员记录; 利用该组件的HTTP API,可以方便的将指定的 用户/部门/系统/管理员删除; ###Scope and Non-Scope ####Scope 用户/部门/系统/管理员 信息相关数据的添加、更新、删除; 查询 用户/部门/系统/管理员的信息; 用户/部门/系统/管理员 的有效性; ###Non-Scope 用户数据的可靠性,数据由管理员负责维护 ##Low-level Design ###Response Code Code Remind Description 200 OK – [GET] 成功返回用户请求的数据 201 CREATED – [POST/PUT] 新建/修改数据成功 204 NO CONTENT – [DELETE] 删除数据成功 400 INVALID REQUEST – [POST/PUT 用户发出请求有误,服务器没有新建/修改数据 401 Unauthorized – [*] token认证失败,token过期等情况 403 Forbidden – [*] 用户认证成功,但没有权限进行相应操作(权限细分) 404 NOT FOUND – [*] 请求的资源(在这里是表、字段不存在等情况) 406 NOT Acceptable – [GET] 用户请求的格式不可得 500 INTERNAL SERVER ERROR – [*] 服务器内部错误,用户无法判断请求是否成功 ###Response| Result #####除了每个响应都携带的返回码和可选的description字段,以下为该API的返回结果(具体形式在每种请求中都有举例):
@ 归零
4 分钟阅读
关于sizeof

关于sizeof

星期三,七月 9 日,2014 年

前两天犯了一个愚蠢的错误,由于对sizeof理解的错误,导致代码出现了一个bug,具体代码逻辑如下: char buf[512]; char *ptr; int size; ptr = buf; size = sizeof(ptr); 本来是计算buf的大小,但这样写其实只是得到 char指针类型的大小,错误的以为ptr指向buf时,用sizeof获取的也是buf的大小。通过了解,如果sizeof的操作数为指针时,不管指针指向什么类型,值都是指针类型的大小,32位系统为4.具体sizeof的结果如下: 1、当操作数为数据类型时,所得结果为给数据类型的大小。如:32bit系统上,sizeof(char)= 1 ,sizeof(int) = 4。 2、当操作数是指针时,sizeof依赖于编译器。例如Microsoft C/C++7.0中,near 类指针字节数为2,far、huge类指针字节数为4。一般Unix的指针字节数为4。 3、当操作数具有数组类型时,其结果是数组的总字节数。 4、联合类型操作数的sizeof是其最大字节成员的字节数。结构类型操作数的 sizeof是这种类型对象的总字节数,包括任何垫补在内。 让我们看如下结构: struct { char b; double x; } a; 在某些机器上sizeof(a)=12,而一般sizeof(char)+ sizeof(double)= 9。 这是因为编译器在考虑对齐问题时,在结构中插入空位以控制各成员对象的地址对 齐。如double类型的结构成员x要放在被4整除的地址。 5、如果操作数是函数中的数组形参或函数类型的形参,sizeof给出其指针的大小。
@ 归零
1 分钟阅读
安装archlinux

安装archlinux

星期六,四月 26 日,2014 年

活着就是为了折腾,Ubuntu已经用了4年多了吧,从最近几年看来,ubuntu的发展目的是要面向大众化,由于要适合大众,所以他的操作更简单,图形界面更美观,这就导致它越来越笨重。对于一个追求速度,喜欢命令模式的程序猿,ubuntu已然不能满足我的要求,所以安装archlinux的想法产生了,活着不就是为了折腾嘛,于是一步一步定制专属自己的linux系统。 1.下载archlinux镜像文件 2.制作usb安装盘 # dd bs=4M if=</archlinux-2014.04.01-dual.iso/的/路径> of=/dev/<U盘文件> && sync 3.从U盘启动选择Boot Arch Linux 4.配置安装 1)连接网络 有线连接: # dhcpcd 无线连接: # wifi-menu ADSL 宽带连接: 配置: # pppoe-setup 连接: # systemctl start adsl 2)选择软件源 # vi /etc/pacman.d/mirrorlist 更新本地数据库: # pacman -Syy 5.分区 1)分区方案: $ lsblk /dev/sda -o NAME,FSTYPE,SIZE,MOUNTPOINT NAME FSTYPE SIZE MOUNTPOINT sda 120G ├─sda1 ext4 36G / ├─sda2 ext4 80G /home └─sda3 swap 4G [SWAP] 注意:swap分区大小建议等于或两倍于内存。 2)分区: MBR 分区:
@ 归零
3 分钟阅读
关于开源软件redis

关于开源软件redis

星期五,四月 4 日,2014 年

最近读redis代码,redis是一个key-value存储系统,详情请看官网介绍redis,仅2万多行代码,实现如此强大的 功能,真是让人不由的惊叹!而且代码是非常之漂亮, 《redis设计与实现》可以帮助你了解redis 的具体实现,redis的github地址。
@ 归零
1 分钟阅读
nginx编译报错

nginx编译报错

星期一,三月 24 日,2014 年

在ubuntu(32bit)上安装nginx执行configure时遇到错误如下: ./configure: error: the HTTP rewrite module requires the PCRE library. You can either disable the module by using --without-http_rewrite_module option, or install the PCRE library into the system, or build the PCRE library statically from the source with nginx by using --with-pcre=<path> option. 貌似缺少pcre库,在网上搜了,说是需要安装pcre-devel,可是ubuntu上安装是找不到pcre-devel。 可能是名字变了,后来终于找到解决办法,需要安装 libpcre3 libpcre3-dev: # sudo apt-get install libpcre3 libpcre3-dev
@ 归零
1 分钟阅读
内存死机问题

内存死机问题

星期一,三月 10 日,2014 年

最近遇到一个内存导致死机的问题,这种问题总是让人很恼火。 Mstar linux方案,由于对指针的检测不够完善,导致使用了空指针。一个问题整了我一天多时间, 最后查出来尽然是珠海有线的码流里边有一个bouquet id是 -256,而代码里边没有处理到这种情况,获取到空指针, 而在使用的时候又没有检测。幸亏有gdb可以用,可以定位到是那个模块出了问题。完了想想本来这个问题要不 了那么长时间,一开始感觉这个变量有点问题,可就被脑子里那种 “不可能这儿出问题啊"的想法打消了,也许 很多程序员会犯这种错误,总是很确信的说"这个不可能”,难道这个真的不可能吗?其实自己也不知道,不知道 从哪儿来的这种莫名其妙的自信。 由这个问题想到: 1)不要轻易做任何假设,负责可能会影响你做出准确的判断。 2)时时刻刻在使用指针时要检测是否为空,这个构建健壮软件的必要条件。 3)要让程序能经得起一些意味发生的情况,比如获取到错误变量等。
@ 归零
1 分钟阅读
提问的智慧

提问的智慧

星期日,三月 2 日,2014 年

作为一个技术人员,在学习和工作中,经常会遇到各种各样的问题,有时候我们没法解答的时候?也许最好的办法就是去 求助与他人,不管是通过网络,还是面对面的方式。 于是如何问问题就变的尤为重要,下面这篇 How to Ask Questions The Smart Way会给你答案,相信看完之后你会有很大收获。
@ 归零
1 分钟阅读
开始我的博客之旅

开始我的博客之旅

星期三,二月 26 日,2014 年

目的 有人曾说,其实每个人都有好的想法,只是我们当中的大多数人不善于跟踪它而已,此博客主要记录平时的一些想法, 一些技术问题以及分享一切美好的人和事… 为什么使用 github pages & jekyll 来创建博客 昨天突然兴起,想创建一个属于自己的博客,于是就在google上搜索如何创建自己博客之类的话题, 搜到一篇写的非常详细的博文 搭建一个免费的,无限流量的Blog—-github Pages和Jekyll入门,免费而且无限流量,太符合我的需求了(是不是有点贱),于是就有了此博。 主题 此博客的主题是在Michael Rose的 Minimal Mistakes主题的基础上修改的,在此感谢Michael Rose!
@ 归零
1 分钟阅读

© 2014 - 2022 Lionel's Blog

Powered by Hugo with theme Dream.