V平台webapi接口格式说明
WebApi简介

WebApi简介在WebApi中,⽅法名以Get开头,WebApi会⾃动默认之歌请求是Get请求,⽽如果你以其他名称开头⽽⼜不标注这个⽅法的请求⽅式,那么这个时候服务器虽然找到了这个⽅法,但是由于请求⽅式不确定,所以直接返回给你405---⽅法不被允许的错误最后结论:所有的WebApi⽅法最好是加上请求的⽅式[HttpGet]/[HttpPost]/[HttpPut]/[HttpDelete],不要偷懒,这样既能防⽌类似的错误,也有利于⽅法的维护,被⼈⼀看就知道这个⽅法是什么请求⽹站在启动时执⾏Application_Start(),给Route增加地址规则,请求进来时,会经过路由匹配找到合适的控制器。
那怎么找Action? 1、根据HttpMethod找⽅法---⽤的⽅法名字开头,Get就是对应的Get请求 2、如果名字不是Get开头,可以加上[HttpGet] 3、按照参数找最吻合其实资源是这样定义的,不是⼀个学⽣,⽽可能是⼀个学校。
可能是⼀个订单----多件商品,⼀次查询,订单-商品,数据之间嵌套关系很复杂。
还有个特性路由,可以单独定制(config.MapHttpAttributeRoutes()、标机特性)IOC容器+配置⽂件初始化控制器也要注⼊--完成容器和WebApi框架融合--实现IDependencyResolver,将容器放进去--初始化config.DependencyResolver 换成⾃定义的Resolverpublic class IOCController : ApiController{private IUserService _UserService = null;public IOCController(IUserService userService){this._UserService = userService;}public string Get(int id){//IUserService service = new UserService();//IUserService service = ContainerFactory.BuildContainer().Resolve<IUserService>();return Newtonsoft.Json.JsonConvert.SerializeObject(this._UserService.Query(id));}}在WebApiConfig中加上:// Web API 配置和服务config.DependencyResolver = new UnityDependencyResolver(ContainerFactory.BuildContainer());UnityDependencyResolver:public class UnityDependencyResolver : IDependencyResolver{private IUnityContainer _UnityContainer = null;public UnityDependencyResolver(IUnityContainer container){_UnityContainer = container;}public IDependencyScope BeginScope()//Scope{return new UnityDependencyResolver(this._UnityContainer.CreateChildContainer());}public void Dispose(){this._UnityContainer.Dispose();}public object GetService(Type serviceType){try{return this._UnityContainer.Resolve(serviceType);}catch (Exception ex){Console.WriteLine(ex.Message);return null;}}public IEnumerable<object> GetServices(Type serviceType){try{return this._UnityContainer.ResolveAll(serviceType);}catch (Exception ex){Console.WriteLine(ex.Message);return null;}}}View CodeContainerFactory:///需要在nuget引⽤之后,单独引⽤Unity.Configuration///如果有AOP扩展,还需要引⽤Unity.Interception.Configuration///因为我们是⽤配置⽂件来做的配置///</summary>public class ContainerFactory{public static IUnityContainer BuildContainer(){//get//{return _Container;//}}private static IUnityContainer _Container = null;static ContainerFactory(){ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();fileMap.ExeConfigFilename = bine(AppDomain.CurrentDomain.BaseDirectory + "CfgFiles\\Unity.Config");//找配置⽂件的路径Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);UnityConfigurationSection section = (UnityConfigurationSection)configuration.GetSection(UnityConfigurationSection.SectionName);_Container = new UnityContainer();section.Configure(_Container, "WebApiContainer");}}View CodeBasic授权认证&权限Filter权限认证,是需要的,因为是Http地址,如果不加权限认证,别⼈不就可以直接拿到这边的请求去进⾏操作了,然后再去猜测别的WebApi。
webapi 参数

webapi 参数摘要:1.Web API 参数简介2.Web API 参数的分类3.Web API 参数的使用方法4.Web API 参数的注意事项5.Web API 参数的未来发展正文:【1.Web API 参数简介】Web API,全称Web 应用程序接口,是一种用于实现Web 服务的技术。
Web API 可以让开发者编写代码来调用第三方Web 服务,从而实现各种功能。
在Web API 中,参数是一个重要的组成部分,它们可以帮助开发者定义和控制API 的输入和输出。
【2.Web API 参数的分类】Web API 参数主要分为以下几类:(1)请求参数:请求参数是在发送请求时附加在请求中的数据。
它们通常用于表示客户端请求的详细信息,如查询条件、排序规则等。
(2)响应参数:响应参数是在服务器处理请求后返回给客户端的数据。
它们通常用于表示服务器处理结果的详细信息,如数据、状态码等。
(3)路径参数:路径参数是URL 中除域名和端口之外的部分,它们通常用于表示请求资源的唯一标识。
(4)查询参数:查询参数是在URL 中以“?”符号后跟的一系列键值对。
它们通常用于向服务器传递额外的请求信息,如搜索查询、分页参数等。
【3.Web API 参数的使用方法】在使用Web API 参数时,开发者需要遵循以下步骤:(1)阅读API 文档:开发者需要详细阅读API 的文档,了解API 的参数类型、格式和作用。
(2)构建请求:开发者需要根据API 文档中的要求,构建包含请求参数的请求。
(3)发送请求:将构建好的请求发送给服务器。
(4)解析响应:服务器处理请求后,会返回包含响应参数的响应。
开发者需要对响应进行解析,以获取所需的信息。
【4.Web API 参数的注意事项】在使用Web API 参数时,开发者需要注意以下几点:(1)参数格式:参数的格式通常为键值对,其中键表示参数名,值表示参数值。
键和值之间用“=”符号连接,多个参数之间用“&”符号连接。
webapi知识点总结

webapi知识点总结一、什么是Web APIWeb API,全称Web Application Programming Interface,即Web应用程序编程接口。
它是一种通过HTTP协议提供的一组可供其他应用程序或系统调用的接口,用于实现不同系统之间的数据和功能交互。
Web API 是一种基于互联网的应用程序接口,具有开放性、易扩展性和跨平台的特点,可大大简化系统间的数据传输和功能调用,使得不同系统之间可以更加灵活地实现信息共享和功能集成。
二、Web API 的分类基于HTTP协议的Web API可以分为不同的类型,常见的包括:1. RESTful API:基于REST架构原则设计的API,使用HTTP动词对资源进行操作,如GET、POST、PUT、DELETE等,以URL作为资源标识,使用JSON或XML等数据格式进行通信。
2. SOAP API:基于XML的简单对象访问协议(Simple Object Access Protocol)设计的API,使用固定的XML消息格式进行通讯,常用于企业间系统集成。
根据不同的功能和用途,Web API还可以分为不同的类型,包括数据API、服务API、组件API等。
三、Web API 的设计原则1. RESTful 设计原则:基于资源、统一接口、状态无关、资源可标识、超媒体驱动等原则,遵循RESTful设计可以简化系统间的交互,并提高系统的可扩展性和灵活性。
2. 信息抽象原则:设计API时需要考虑用户需要的信息,对信息进行抽象和封装,提供适当的抽象层级,以便用户可以简单、灵活地使用API。
3. 规范化的接口:设计API时需要提供规范化的接口,包括清晰的URL路径、统一的数据格式、合理的状态码等,使得API易于使用和理解。
4. 数据安全和隐私原则:设计API时需要考虑数据的安全性和隐私性,采用合适的认证、授权和加密机制,以确保数据传输和存储的安全性。
5. 性能优化原则:设计API时需要考虑性能优化,包括减少网络传输量、合理使用缓存、优化数据库查询等方面,以提高API的响应速度和稳定性。
API(应用程序接口)模板

API(应用程序接口)模板
API(应用程序接口)模板是一种定义、规范和描述API的文件或结构。
它包含了API的名称、版本、终端点、参数、请求和响应的格式等信息,使开发者能够理解和使用API。
以下是一个示例API模板的结构:
1. API名称:API的名称,用于标识API的功能。
2. 版本号:API的版本号,用于区分不同版本的API。
3. 描述:API的简要描述,概述了API提供的功能和用途。
4. 终端点:API的URL地址,用于调用API的入口点。
5. 请求方法:API支持的HTTP请求方法,如GET、POST、PUT、DELETE等。
6. 请求参数:API接收的参数,包括请求头参数、路径参数、查询参数、请求体参数等。
7. 响应格式:API返回的数据格式,如JSON、XML等。
8. 响应状态码:API返回的HTTP状态码,用于指示API执行结果。
9. 响应数据:API返回的数据结构,描述了API返回的数据字段及其类型。
10. 错误处理:API可能返回的错误状态码和对应的错误信息。
使用API模板可以帮助开发者理解API的功能和用法,减少接口文档的重复工作,并提供一致的API风格和格式。
API模板也可以作为API的合同,定义了API的规范,开发者需要按照规范来使用API。
webapi使用方法

webapi使用方法Web API(Web Application Programming Interface)是一种用于不同应用程序之间进行通信的技术,它可以使不同的应用程序之间共享数据和功能。
通过使用Web API,开发人员可以轻松地将应用程序的功能扩展到其他平台和设备上。
本文将介绍Web API的使用方法,以帮助开发人员更好地理解和应用这项技术。
一、Web API的基本概念Web API是一组定义了应用程序之间通信规范的接口。
它允许开发人员使用HTTP协议在不同的应用程序之间传递数据。
Web API可以接收HTTP请求,并返回相应的数据或执行相应的操作。
开发人员可以使用不同的编程语言和框架来创建Web API,例如Java、C#、Python等。
二、Web API的使用场景Web API广泛应用于各种场景,例如:1.移动应用程序开发:开发人员可以使用Web API将移动应用程序与服务器进行通信,实现数据的传递和功能的扩展。
2.跨平台应用程序开发:Web API可以使不同平台的应用程序共享数据和功能,实现跨平台应用程序的开发和部署。
3.第三方应用程序集成:通过使用Web API,开发人员可以将自己的应用程序集成到其他应用程序中,实现数据共享和功能交互。
三、Web API的使用步骤使用Web API一般需要经过以下步骤:1.确定API的功能和数据:首先,开发人员需要确定API的功能和需要共享的数据。
这可以根据应用程序的需求和业务逻辑来确定。
2.设计API的接口:接下来,开发人员需要设计API的接口,包括请求方法(GET、POST、PUT、DELETE等)、请求参数和响应数据格式等。
3.实现API的功能:根据设计的接口,开发人员需要实现API的功能,包括数据的获取、处理和返回等。
在实现过程中,开发人员可以使用各种编程语言和框架来实现API的功能。
4.测试API的功能:完成API的实现后,开发人员需要进行测试,确保API的功能和数据的正确性。
K3CloudWebAPI接口说明书V0

K3Cloud WebAPI 接口说明书_V2.0目录1. 概述 (3)1.1. 目的 (3)1.2. 范围 (3)1.3. 适用对象 (3)1.4. 参考资料 (3)2. 问题与解决策略 (3)3. 目标和约束 (4)4. WebAPI架构 (4)4.1. 采用的技术 (4)4.1.1. Kingdee.BOS.WebApi.FormService.dll (4)4.1.2. Kingdee.BOS.WebApi.ServicesStub.dll (4)4.1.3. Kingdee.BOS.WebApi.Client.dll (4)4.1.4. 开发工具 (4)5. WebAPI接口详细描述 (5)5.1.1. 登陆验证接口 (5)5.1.2. 查看表单数据接口 (8)5.1.3. 保存表单数据接口 (9)5.1.4. 批量保存表单数据接口 (11)5.1.5. 提交表单数据接口 (14)5.1.6. 审核表单数据接口 (16)5.1.7. 反审核表单数据接口 (17)5.1.8. 删除表单数据接口 (18)5.1.9. 表单数据查询接口 (19)5.1.10. 自定义WebAPI接口 (21)6. 附录(集成相关知识分享) (24)1.1. 目的为异构系统访问K/3Cloud系统数据提供通用的接口。
当企业规模逐渐增大时,作为支撑业务运营的IT建设也变得越来越重要,不过往往企业的IT 建设过程中会发现某一家软件供应商基本不能完全覆盖企业所有的业务运营流程,这样的结果就是,企业上的IT系统很多很全,从ERP到HR、CRM、PDM、OA等,貌似所有的业务都覆盖到了,但实际上因为这些系统的不集成,而形成了企业很多新的信息孤岛,非常不利于企业的后续的管理和战略发展。
K/3Cloud从现今和往后的发展趋势来看,也不可避免会遇到上述问题,毕竟企业经营的多样化,并不是所有的业务都能在K/3Cloud中完成,所以我们必须在产品架构上支持更好的与外部系统进行协同。
Web API接口设计经验总结

Web API接口设计经验总结在Web API接口的开发过程中,我们可能会碰到各种各样的问题,我在前面两篇随笔《Web API应用架构在Winform混合框架中的应用(1)》、《Web API应用架构在Winform混合框架中的应用(2)--自定义异常结果的处理》也进行了总的介绍,在经过我的大量模块实践并成功运行后,总结了这篇随笔,希望对大家有所帮助。
1、在接口定义中确定MVC的GET或者POST方式由于我们整个Web API平台是基于MVC的基础上进行的API开发,因此整个Web API的接口,在定义的时候,一般需要显示来声明接口是[HttpGet]或者[HttpPost],虽然有些接口也可以不用声明,但是避免出现类似下面的错误信息,显式声明还是有好处的。
例如在基类定义的查找对象接口如下所示。
1./// <summary>2./// 查询数据库,检查是否存在指定ID的对象3./// </summary>4./// <param name="id">对象的ID值</param>5./// <returns>存在则返回指定的对象,否则返回Null</returns>6.[HttpGet]7.public virtual T FindByID(string id, string token)如果是增删改的接口,一般需要声明为POST方式提交数据,而且基于安全性的考虑,需要携带更多的参数。
1./// <summary>2./// 插入指定对象到数据库中3./// </summary>4./// <param name="info">指定的对象</param>5./// <returns>执行操作是否成功。
</returns>6.[HttpPost]7.public virtual CommonResult Insert(T info, string token, string signature, string timestamp, string nonce, string appid)2、动态对象的接口定义在一般的Web API接口里面,我们可能都会碰到很多简单类型的参数,但是又想让它们以POST方式提交数据,那么我们就可以有两种方法来处理,一种是定义一个类来放置这些参数,一种是采用动态的JObject参数,前者有很多不方便的地方,因为我们不可能为每个接口参数定义多一个实体类,这样可能会有很多难以管理的类定义。
webapi报文格式

webapi报文格式Web API(应用程序编程接口)的报文格式可以有多种形式,常见的有以下几种:1. JSON(JavaScript Object Notation)格式,JSON是一种轻量级的数据交换格式,易于阅读和编写,也易于解析和生成。
它使用键值对的方式表示数据,可以表示复杂的数据结构。
JSON报文使用大括号{}表示对象,使用方括号[]表示数组,键值对使用冒号:分隔。
2. XML(eXtensible Markup Language)格式,XML是一种标记语言,用于描述数据的结构和内容。
XML报文使用标签来标识数据的元素和属性,具有良好的可扩展性和可读性。
XML报文以一个根元素为起点,通过嵌套的方式描述数据的层级关系。
3. Form Data(表单数据)格式,表单数据是一种常见的Web API报文格式,通常用于HTTP POST请求中。
它使用键值对的方式表示数据,类似于URL参数的形式。
键值对之间使用等号=连接,多个键值对之间使用与号&连接。
4. Multipart Form Data(多部分表单数据)格式,多部分表单数据格式也常用于HTTP POST请求中,特别适用于上传文件等场景。
它将报文分为多个部分,每个部分都有自己的Content-Type和Content-Disposition。
每个部分可以包含表单字段和文件数据。
5. Protobuf(Protocol Buffers)格式,Protobuf是一种高效的二进制序列化格式,用于结构化数据的序列化和反序列化。
它使用预定义的消息类型和字段来描述数据的结构,可以实现高效的数据传输和存储。
以上是常见的几种Web API报文格式,每种格式都有其适用的场景和特点。
开发者在设计和使用Web API时,可以根据具体需求选择合适的报文格式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
V平台webapi接口格式说明银弹谷V平台部2017/9/22修订目录V平台WEBAPI接口格式说明 (1)银弹谷V平台部 (1)1. 概述 (3)1.1构件API的一般访问形式 (3)1.2构件API的定义 (4)1.3构件API的版本 (4)1.4HTTP请求格式的一般约定 (4)2. 安全控制 (5)2.1子系统层次安全控制 (5)2.2业务用户层次安全控制 (5)3. 构件API输入参数 (6)3.1定义 (6)4. 返回数据格式 (7)4.1HTTP响应头 (7)4.2执行结果 (7)5. API文档发布 (8)1.概述构件是V平台的功能包装单元,系统的主要业务功能通过构件自身、以及构件之间的协作完成。
构件内可通过配置方式对外提供具体的业务API,构件API通过HTTP调用方式对外公开。
构件API除了从属于某一个构件、有一个标识名称以外,构件API还从属于某一个命名空间,命名空间用于对API进行适当的归类,以便于管理和使用。
命名空间+ API名称,构成了构件API的唯一标识。
1.1构件API的一般访问形式构件API访问形式:命名空间/apiCode,类似:http://*****:**/context/webapi/VBASE/WORKFLOW/DEFINITION/CreateWorkflowDe finition●其中,*****:**指应用所在的域名及端口;●context指应用上下文;●webapi是固定的api标识;●VBASE/WORKFLOW/DEFINITION指API的命名空间,命名空间可以在开发系统中,定义业务API的时候设定;●CreateWorkflowDefinition指具体的API名称另外:为了兼容之前已经有的vbase所提供的api,兼容支持以下的访问格式:形如调用vbase的原有的api形式为:构件code/apiCode例如:http://*****:**/webapi/vbase_workflow/API_GetBizProcessInstanceRela1.2构件API的定义1.3构件API的版本一般情况下,为了维持构件API的稳定性以及易用性,通常API需要做到向下兼容,即:相同API标识(构件名+命名空间+API名称)下,其输入参数和返回值格式是稳定的。
如果需要增加额外参数,可以在API实现中对新添加的参数做兼容处理。
此外,如果需要支持同一API的不同版本,可以通过在命名空间中加入版本分段的方式来间接达到区分API版本的效果。
例如:某命名空间定义为:v1/WORKFLOW/DEFINITION那么,其访问的URL为:http://*****:**/context/webapi/VBASE/v1/WORKFLOW/DEFINITION/CreateWorkflow Definition1.4HTTP请求格式的一般约定HTTP方法约定为POST;POST参数编码约定为UTF-8;HTTP响应体内容编码约定为UTF-8格式的JSON串;对于参数中含有实体的请求,推荐使用编码格式为UTF-8的JSON串,注意事项如下1.请求约定使用POST2.HTTP头设置content-Type为application/json;charset=utf-83.在body中添加参数,形式类似如下:{"message":[{"name":"name44","passwd":"pass44"},{"name":"name33","passwd":"pass33"}],"count":"23"}其中body中的message表示一个实体(即二维表),如下图所示:服务端返回结果如下图所示:当请求参数较为简单,可使用form表单的形式提交请求,具体如下图所示1.在url后面加入需要请求的参数,形式如下:http://localhost:8080/webapi/test/sendMessage?count=122.HTTP请求使用GET的形式3.Content-type设置为application/x-www-form-urlencoded;charset=utf-82.安全控制Webapi的安全控制分两个层次,子系统层次、以及业务用户层次。
2.1子系统层次安全控制子系统层次是在系统集成中,对调用V平台webapi的第三方子系统进行授权。
子系统授权不涉及具体API权限,仅仅是控制第三方子系统是否可访问所有webapi。
特别说明的是,目前基于子系统的授权,后续版本中可能优化、调整授权管理方式。
系统默认安装后,未启用子系统授权控制。
要启用此项功能,先修改子系统授权配置文件,位置:conf\setting\itop\permission\authority.txt,格式为“子系统标识=授权码”,可以配置多行。
若此文件内容为空,则视为不需要进行子系统校验。
HTTP请求格式:子系统授权码需要在HTTP请求头部传入,例如:httppost.setHeader("Authorization", "Basic " + CryptoUtils.encodeBASE64("siben:123456")); 例子其中:siben为子系统标识,123456为授权码Header Key Header Value DescriptionAuthorization Basic 123456 Value值要使用Base64 编码2.2业务用户层次安全控制要使用业务层次的安全控制,需要安装平台专业版(VBASE版)。
在VBASE中,提供了对webapi(也叫构件方法)资源的授权管理,可以针对系统业务用户,对webapi功能进行授权。
当webapi启用了授权后,第三方系统请求webapi时,就需要携带对应的身份信息。
身份信息存储在COOKIE的jsessionid中。
具体的,第三方系统首先需要使用专业版的登录API登录系统;登录后从系统响应头部Set-Cookie中提取会话标识jsessionid,在随后的请求里,需要在cookie中携带此jsessionid标识(例如httppost.setHeader("Cookie", "JSESSIONID=" + jsessionid_value))。
如果第三方系统使用诸如HttpClient类似的第三方HTTP请求类库的话,第三方库会自动处理COOKIE的传递,只要后续的请求使用同一个HttpClient实例即可。
其他平台如dotnet等类似处理。
VBASE中对构件方法的授权操作,请参照文档:《Vbase权限设置》使用手册,第8节:构件方法授权,文档下载地址:/document/yewuyingyong/5-show-article.htmlVBASE中登录API的介绍,请参考文档:VBASE_API设计文档(XX年XX月底版本),在其中查找:LoginComp_API接口说明.xls,其中的:API_AccPwdIdentityAndLogin,文档下载地址:/document/pingtaikuozhan/designDocList.html3.构件API输入参数3.1定义在定义构件API时,可设定API的输入参数;如下:其中,输入参数支持以上数据类型。
●布尔:true/false;●文本:”中文abcd”/null;●小数:3.14159;●实体:实体表示一个二维表。
例如:[{"param0" : 2,"param1" : "广东","param2" : "珠海22"},{"param0" : 1,"param1" : "广东1","param2" : "珠海221"}]4.返回数据格式4.1HTTP响应头HTTP响应头决定了基本的api调用结果:●301:身份认证失败●401:api地址无效或版本无效●200:api访问成功4.2执行结果如果api返回状态码是200,则返回的数据用以下json格式呈现:如果执行成功,返回结果:如果执行失败,返回结果:errorCode代表具体的错误类型,由具体API来定义。
其中,框架运行时错误信息会分配一个专用CODE,无须额外定义,表达API执行过程中出现了无法预期的错误。
例如:数据库连接失效、事务提交失败、磁盘空间不足等。
msg存储具体的错误描述信息。
5.API文档发布在开发系统中定义的构件API,可利用开发系统的文档生成功能,自动产生构件API 描述文档。
如下是一个API的说明的样例(注意:在API的参数示例中,为了方便说明,将参数用JSON方式呈现出来,实际上,在发出API请求时,其参数形式类似name1=value1 & name2=value2,只有对于实体参数,其参数值才是一个JSON数组):业务流程启动触发源服务用于业务流程启动触发源服务,主要使用场景:当业务流程启动时,需要触发源服务,则调用该API。
接口调用请求说明API编码:WorkFlowChainBizProcessStartSourcehttp请求方式: POSThttp://*****:**/context/webapi/VBASE/WORKFLOW/DEFINITION/WorkFlowChainBizProcessStartSource 参数说明:编码名称类型初始值必须字段描述variableEntity 流程变量信息实体是编码名称类型初始值描述流程变量信息VariableName 变量名称文本VariableValue 变量值文本topic 审批标题文本是startUserId 启动用户ID 文本是startUserName 启动用户名称文本否bizProcessCode 业务流程编号文本否参数示例:返回说明:编码名称类型初始值字段描述FlowVariables 输出流程变量实体编码名称类型初始值描述输出流程变量VariableName 变量名称文本VariableValue 变量值文本status 状态布尔返回示例:错误说明:广东同望科技股份有限公司错误编码错误说明备注101 业务流程不存在102 启动失败错误示例:第 5 页共11 页。