从零开始设计SOA框架(二):请求/响应参数的设计

每个接口都有请求参数、响应参数。其中请求参数分为公共参数和业务参数、响应参数分为两类:正常的响应参数、统一的错误参数

一、请求参数

1、公共参数:每个接口都有的参数,主要包含appkey、时间戳、版本、响应格式、session

参考淘宝开放平台如下:

公共请求参数:a) session:有些接口需要登陆后才能调用,所以需要传递session参数b) timestamp:用于验证相同一组参数值不能重复使用,如其它参数都一样,timestamp也一样可考虑是否参数被他人截获并反复调用,服务端遇到这种情况可拒绝服务c) sign:是所有参数+app_secret加密后的字符串,则无法伪造sign串

名称 类型 是否必须 描述
method String API接口名称。
app_key String TOP分配给应用的AppKey。
session String 用户登录授权成功后,TOP颁发给应用的授权信息,详细介绍请点击这里。当此API的标签上注明:“需要授权”,则此参数必传;“不需要授权”,则此参数不需要传;“可选授权”,则此参数为可选。
timestamp String 时间戳,格式为yyyy-MM-dd HH:mm:ss,时区为GMT+8,例如:2015-01-01 12:00:00。淘宝API服务端允许客户端请求最大时间误差为10分钟。
format String 响应格式。默认为xml格式,可选值:xml,json。
v String API协议版本,可选值:2.0。
partner_id String 合作伙伴身份标识。
target_app_key String 被调用的目标AppKey,仅当被调用的API为第三方ISV提供时有效。
simplify Boolean 是否采用精简JSON返回格式,仅当format=json时有效,默认值为:false。
sign_method String 签名的摘要算法,可选值为:hmac,md5。
sign String API输入参数签名结果,签名算法介绍请点击这里

2、业务参数

每个接口特定的参数

1、如根据商品编号获取商品信息接口,则参数为product_id

2、如登录接口,则参数为login_name,login_pwd等

二、响应参数

响应参数分为两大类,如果接口调用成功则返回业务参数,如果调用失败则统一返回错误信息

1、正常返回

a) 获取用户信息返回参数


1

2

3

4

5

6

7

<user_buyer_get_response>

    <user>

        <nick>hz0799</nick>

        <sex>m</sex>

        <avatar>http://assets.taobaocdn.com/app/sns/img/default/avatar-120.png</avatar>

    </user>

</user_buyer_get_response>

2、错误返回

错误参数包括错误主信息,错误子信息,如请求参数验证失败,则主信息提示参数错误,子信息包含具体哪个参数错误

a) solution:可选,给出解决错误的建议

b) code: 主错误信息,定义全局的错误编码

c) msg:错误原因


1

2

3

4

5

6

7

8

9

10

<error_response>

    <code>50</code>

    <msg>参数错误</msg>

    <solution></solution>

    <sub_errors>

        <sub_code>isv.invalid-parameter</sub_code>

        <sub_msg>用户名不能为空</sub_msg>

        <sub_solution>请填写用户名</sub_solution>

    </sub_errors>

</error_response>

时间: 2024-10-24 20:19:48

从零开始设计SOA框架(二):请求/响应参数的设计的相关文章

从零开始设计SOA框架(三):请求参数的加密方式

第二章中说明请求参数有哪些,主要是公共参数和业务参数,服务端需要对参数进行效验,已验证请求参数的合法性 参数效验前先解释下以下参数: 1.参数键值对:包括公共参数.业务参数 1.公共参数:按键值对拼串,如time=123123app_id=sdf34234method=user.buyer.get等 2.系统参数: 1.如果是get请求则添加到公共参数后面 2.如果是post请求则需要服务端从form中获取 2.内部key:双方约定的秘钥,一般为app_secret 3.sign:键值对+内部k

响应式网页设计

随着越来越多类型的移动设备的普及,网页设计也随之变化,响应式网页设计应用而生,目前已有有很多比较流行的框架解决此问题,无论切换任何设备,都会自动根据设备的大小进行动态变化,无需为每个量身定做不同类别的网页,大大节省了开发工作量,响应式网页设计已经成为一种趋势. 一.流行的前端(from_end)设计框架很多,大概有以下几种: 1. Bootstrap Boostrap绝对是目前最流行用得最广泛的一款框架.它是一套优美,直观并且给力的web设计工具包,可以用来开发跨浏览器兼容并且美观大气的页面.它

说说响应式网页设计

在这里我只说说我对响应式网页设计的理解,具体实现过程就先不说了~ 响应式网页设计(RWD,Responsive Web Design)这个术语,由伊桑·马科特(Ethan Marcotte)提出.他在A List Apart发表了一篇开创性的文章,将三种已有的开发技巧(弹性网格布局.弹性图片.媒体和媒体查询)整合起来,并命名为响应式网页设计. 响应式网页设计正是前端界“以人为本”的体现.Web的初衷就是为了让信息更好的传递交流,方便人们无障碍的获取信息.而网页就是人们获取.传递信息的一个接口,信

Flask框架(二)—— 反向解析、配置信息、路由系统、模板、请求响应、闪现、请求扩展、session

目录 反向解析.配置信息.路由系统.模板.请求响应.闪现.session 一.反向解析 1.什么是反向解析 2.使用 二.配置信息 1.默认配置 2.修改方法一--点的方式修改 3.修改方法二--利用字典修改 4.修改方法三--通过py文件修改(常用) 5.修改方法四--利用类或类的路径修改(常用) 6.其他方法修改配置 三.路由系统 1.基本写法 2.转换器 3.路由本质 4.CBV 5.自定义支持正则 四.模板 五.请求与响应 六.session 七.闪现(flash) 1.使用 2.示例

基于请求响应的MVC框架调用分析

一,使用Servlet来处理请求响应 当客户端提交数据之后,接着发送请求,请求被封装成对象,服务器接收到请求,根据请求的URL,来判断将请求对象交由哪个Servlet处理.在servlet中,我们可以根据请求是从哪里发出的,来判断我们具体执行哪段处理表现层业务逻辑的if-else.或者,可能我们客户端会提交一个参数,我们可以根据参数来判断调用哪段代码去渲染表现层,返回给客户端.无论是怎么判断,中间的选择都是要得出我们要返回哪个表现层,例如,返回哪个JSP! 当表现层越来越多的时候,我们的选择逻辑

各开源框架使用与设计总结(二)

原文详见:http://www.ucai.cn/blogdetail/7032?mid=1&f=5 可以在线运行查看效果哦! 5.4.zephir高效开发模块 好的,讲到这里,衍生出一个小话题,就是开发模块. 在PHP里,开发模块,是一个很痛苦的过程.因为C语言,大家都知道,是出了名的难学的,值得高兴的是,也是Phalcon这个团队的童鞋们,也为我们准备了一个高效的开发模块的语言,称之为zephir.正因为扩展如此难以开发,但是扩展又是如此高效,所以我们要用高效的方式来开发扩展. git clo

Jmeter之Json Path Extractor 接受上一个请求的响应参数

最近在使用Jmeter进行接口测试,被一个问题困扰了很久,就是第二个请求如何接收上一个请求响应中的参数,刚开始尝试着用网上普遍说的正则表达式,长了了N多次之,都没有达到我想要的效果,被整的够惨,于是,开始尝试使用第二种方法,就是Jmeter之Json Path Extractor,感觉棒极了,在此记录下 1.下载安装 Json Path Extractor插件,然后解压到jmeter安装目录相应的文件夹下(这里不细讲了) 2.添加请求A,输入响应的服务器.端口号.路径等(路径要记得输对哦),在A

十大响应式Web设计框架

http://www.csdn.net/article/2014-05-13/2819739-responsive-frameworks-for-web-design 对于设计师而言,网站设计中的任意一环节都不容忽视.时下,借助网上的一些资源,只需简单的几个步骤你就可创建出更具吸引力的设计,包括菜单.背景.动画.眉头.body等设计.响应式Web设计不仅能够适用于任何屏幕尺寸,还为用户带来更完美的体验,本文将分享十款最佳的响应式Web设计,助你大大简化工作流程. Gumby Framework

我的Spring之旅(二):为请求添加参数

1.前言 在上一篇我的Spring之旅(一)中,我们只是利用不带参数的请求返回一个网页或一段json,在实际的B/S.C/S网络交互中,请求中需要自定义的参数.本篇将简单地为之前的请求添加参数. 2.参数说明 ①method:API名称,用于区分服务端调用方法 ②name:请求参数名称,将作为method方法的实参 3.改写HelloController.java package com.nextgame.web; import java.io.IOException; import net.s