web api接口开发(web后端api接口开发教程)

网友投稿 761 2023-03-09


本篇文章给大家谈谈web api接口开发,以及web后端api接口开发教程对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享web api接口开发的知识,其中也会对web后端api接口开发教程进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

asp.net mvc3 项目怎么开发API接口?

Visual Studio为我们提供了专门用于创建ASP.NET Web API应用的项目模板web api接口开发,借助于此项目模板提供的向导,我们可以“一键式”创建一个完整的ASP.NET Web API项目。在项目创建过程中,Visual Studio会自动为我们添加必要的程序集引用和配置,甚至会为我们自动生成相关的代码,总之一句话web api接口开发:这种通过向导生成的项目在被创建之后其本身就是一个可执行的应用。
对于IDE提供的这种旨在提高生产效率的自动化机制,我个人自然是推崇的,但是我更推荐读者朋友们去了解一下这些自动化机制具体为我们做了什么?做这些的目的何在?哪些是必需的,哪些又是不必要的?正是基于这样的目的,在接下来演示的实例中,我们将摒弃Visual Studio为我们提供的向导,完全在创建的空项目中编写我们的程序。这些空项目体现在如右图所示的解决方案结构中。
如右图所示,整个解决方案一共包含6个项目,上面介绍的作为“联系人管理器”的单页Web应用对应着项目WebApp,下面的列表给出了包括它在内的所有项目的类型和扮演的角色。
·Common:这是一个空的类库项目,仅仅定义了表示联系人的数据类型而已。之所以将数据类型定义在独立的项目中,只要是考虑到它会被多个项目(WebApi和ConsoleApp)所使用。
WebApi:这是一个空的类库项目,表现为HttpController类型的Web API就定义在此项目中,它具有对Common的项目引用。
WebHost:这是一个空的ASP.NET Web应用,它实现了针对ASP.NET Web API的Web Host寄宿,该项目具有针对WebApi的项目引用。
SelfHost:这是一个空的控制台应用,旨在模拟ASP.NET Web API的Self Host寄宿模式,它同样具有针对WebApi的项目引用。
WebApp:这是一个空的ASP.NET Web应用,代表“联系人管理器”的网页就存在于该项目之中,至于具体的联系人管理功能,自然通过以Ajax的形式调用Web API来完成。
ConsoleApp:这是一个空的控制台应用,我们用它来模拟如何利用客户端代理来实现对Web API的远程调用,它具有针对Common的项目引用。
二、定义Web API
在正式定义Web API之前,我们需要在项目Common中定义代表联系人的数据类型Contact。简单起见,我们仅仅为Contact定义了如下几个简单的属性,它们分别代表联系人的ID、姓名、联系电话、电子邮箱和联系地址。
1: public class Contact
2: {
3: public string Id { get; set; }
4: public string Name { get; set; }
5: public string PhoneNo { get; set; }
6: public string EmailAddress { get; set; }
7: public string Address { get; set; }
8: }
表现为HttpController的Web API定义在WebApi项目之中,我们一般将ApiController作为继承的基类。ApiController定义在“System.Web.Http.dll”程序集中,我们可以在目录“%ProgramFiles%\Microsoft ASP.NET\ASP.NET Web Stack 5\Packages\”中找到这个程序集。具体来说,该程序集存在于子目录“Microsoft.AspNet.WebApi.Core.5.0.0\lib\net45”中。
Web API体现在如下所示的ContactsController类型中。在该类型中,我们定义了Get、Post、Put和Delete这4个Action方法,它们分别实现了针对联系人的查询、添加、修改和删除操作。Action方法Get具有一个表示联系人ID的可缺省参数,如果该参数存在则返回对应的联系人,否则返回整个联系人列表。由于ASP.NET Web API默认实现了Action方法与HTTP方法的映射,所以方法名也体现了它们各自所能处理请求必须采用的HTTP方法。
1: public class ContactsController: ApiController
2: {
3: static List<Contact contacts;
4: static int counter = 2;
5:
6: static ContactsController()
7: {
8: contacts = new List<Contact();
9: contacts.Add(new Contact { Id = "001", Name = "张三",
10: PhoneNo = "0512-12345678", EmailAddress = "zhangsan@gmail.com",
11: Address = "江苏省苏州市星湖街328号" });
12: contacts.Add(new Contact { Id = "002", Name = "李四",
13: PhoneNo = "0512-23456789", EmailAddress = "lisi@gmail.com",
14: Address = "江苏省苏州市金鸡湖大道328号" });
15: }
16:
17: public IEnumerable<Contact Get(string id = null)
18: {
19: return from contact in contacts
20: where contact.Id == id || string.IsNullOrEmpty(id)
21: select contact;
22: }
23:
24: public void Post(Contact contact)
25: {
26: Interlocked.Increment(ref counter);
27: contact.Id = counter.ToString("D3");
28: contacts.Add(contact);
29: }
30:
31: public void Put(Contact contact)
32: {
33: contacts.Remove(contacts.First(c = c.Id == contact.Id));
34: contacts.Add(contact);
35: }
36:
37: public void Delete(string id)
38: {
39: contacts.Remove(contacts.First(c = c.Id == id));
40: }
41: }
简单起见,我们利用一个静态字段(contacts)表示存储的联系人列表。当ContactsController类型被加载的时候,我们添加了两个ID分别为“001”和“002”的联系人记录。至于实现联系人CRUD操作的Action方法,我们也省略了必要的验证,对于本书后续的演示的实例,我们基本上也会采用这种“简写”的风格。

web api是什么

Web API是网络应用程序接口。
今天的web计算平台包含了广泛的功能,其中的大部分均可以通过API(应用程序编程接口)访问。从简
单的社会书签服务del.icio.us,到复杂得多的amazon s3'全虚拟化存储平台,想想能用这些web api做点什么,真是惊人。
web平台归为6个基本设施,并简要概述些相关产品。其间的线索是这些产品都提供了API,这意味者web api接口开发他们本身可以被其他服务整合。
存储服务:存储服务关注抽象化和虚拟化存储。这个领域的领头羊是amazon s3,在我的article in web 2.0 journal中对其曾有较深入的探讨。对开发者而言,S3提供了极其精简抽象的如哈希表之类的API,允许web api接口开发你轻松存取信息。
另一个有意思的服务是openemy,它提供了类似于文件系统接口的api,但增加了给文件标签的能力。今
年早些时候,TechCrunch剖析了其他一些在线存储服务。但至今我们还没看到传说中颠覆性的存储服务GDrive(来自google)和LiveDrive(来自微软),他们很大可能都会提供api。
消息服务:消息服务在概念上类似于传统意义上的中间件。由于技术和商业上的复杂性,它们还没有被大规模开发。短期内可见的基于web的通讯服务是Amazon Simple Queue Service。这个服务使得任意应用间安全和可扩展的基于队列的通讯更为便利。
计算服务:目前还没有一个一般的可以通过api访问的web计算服务黑盒,但有不少技术指向这个方向。一个是alexavertical search platform,在下面的搜索服务小节会提及更多,第二个是网格计算,比如 sungrid,datasynapse's gridserver或者platform's symphony。
在API里封装任意的计算任务是个相当具挑战性的任务,也许还要很多年这种服务才会广泛流行。
信息服务:信息服务提供海量特定的信息。包括像Google Maps API的地理数据,像Amazon E-Commerce,Amazon historcal Pricing Services的产品数据和最新发布的Yahoo!answer's API登。这些服务的共同点是它们都提供
简单的API来访问海量数据,可能催生孤立信息间的不可预知的交叉应用。
搜索服务:因为搜索在web领域的基础和统治地位,搜索服务构成了新的web基础架构的关键部分。Google search
api是较早的如今已成典型的搜索抽象机制。另一个例子是alexa search platform,它的设计带动了一系列挑战google地位的垂直搜索引擎。相当有意思的是从技术上看,alexa search platform更多表现为一个计算服务,不过局限在搜索领域而已。这意味者其他服务的可能性,比如排序服务或者数据转换服务。
web2.0服务:最后一类宽泛的叫它们web2.0服务,名字不一定切题,但它包含诸如del.icio.us,flickr,basecamp
。John Musser在Programmableweb中编译了一些非常有影响的api。
这些特定的服务将来会成为上述其他服务的使用者,但当前它们的价值更多体现在它们提供了清晰的,
特定的,简单的api来查看和改变大家拥有的信息。尽管它们看起来更像分子而非原子,但在当今的web领域里,它们是如此基本的服务,所以我把它们视为构成成分还是很有意义的。

net怎么调用API接口

.net怎么调用API接口,事实上咱们使用的类库都是API,所以对于怎么调用API接口这句话有问题,web api接口开发你可能是在问的API接口指定的是Web API,而web api在属于MVC4中一个开发框架,但用起来非常好用,所以在MVC5时,Web API 2.0从MVC5中独立出来。
那么web api适用的场景其实是替代了wcf中的restful风格,也只能在http/https上实现,WCF是SOAP协议,其作用是跨平台,如果简单面对象协议,其实在其web api接口开发他平台也可以调用的,但wcf restful风格开发,包括后来的web api其实真正的作用是跨终端,可以在不同的终端上进行交互。但是由于近段的微服务/面向服务思想,在不少的平台的使用了web api的开发方式,所以可能会涉及到相对应的后台调用方式。比如部分接口商提供的就是web api方式开发的。这种情况一般调用时使用的是httpclient类(该类是基本httpClient上的一种调用方式,在.net 4.5开发上存在),也就是说基本上httpClient就是为类似请求而生。
这相当于.net4.0之前的webclient的方式一样,都是在http/https上的一种封装开发方式。
如果针对其他的情况,web api接口开发我们可以考虑使用可插入编程协议httpwebrequest开发,但这个是一个中间插入协议,继承于webrequest,所以是属于中级一点的开发技术。当然,如果对性能或是其他方面存在要求时,socket编程也是达到要求,但开发难度比较大。

API接口与webservice接口的区别

1. webservice走HTTP协议和80端口。
2. 而你说的api,用的协议和端口,是根据开发人员定义的。
3. 这么说吧,api类似于cs架构,需要同时开发客户端API和服务器端程序。
4. 而WebService则类似于bs架构,只需要开发服务器端,不需要开发客户端,客户端只要遵循soap协议,就可以调用。

magic-api 快速接口开发

magic-api 是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口。

1,引入magic-api-spring-boot-starter依赖
org.ssssssss

magic-api-spring-boot-starter

1.7.1
2,application.yml 中配置

magic-api:

#配置web页面入口

web: /magic/web

resource:

# location: /data/magic-api

type: database # 配置接口存储方式,这里选择存在数据库中

table-name: magic_api_file # 数据库中的表名

3,启动服务,访问magic-api web页面

magic-test/magic/web

1,RequestParam

GET http://localhost:9999/xxx/xxx?name=abcage=49

这样的URL参数magic-api 会自动将name和age映射为同名变量

2,表单参数

POST http://localhost:9999/xxx/xxx

name=abcage=49

这样的表单参数magic-api 也会自动将name和age映射为同名变量。

3,Request Header参数获取

magic-api 会对所有RequestHeader统一封装为一个名为header的变量 如要获取 token 可以通过header.token 来获取。

4,POST请求的Request Body参数获取

{

"name": "magic-api"

}

如要获取name属性 则可通过 body.name 来获取

5,Path参数获取

主要是针对URL定义为http://localhost:9999/user/{id} 的类似接口

如要获取path路径上的id可通过path.id 或 id来获取

6,Cookie,Session参数获取

可以通过cookie.xxx,session.xxx来获取

1,#{} 注入参数,${} 拼接参数

作用和mybatis用法一致

id = #{id};

id=${id};

2,动态SQL参数

通过?{condition,expression}来实现动态拼接SQL,如果条件成立则拼接后部分内容SQL中,与mybatis中的if标签基本一致

return db.select("select * from sys_user ?{id,where id = #{id}}");

相当于mybatis中的

3,Mybatis 语法支持

1.6.0以后的版本支持Mybatis语法

操作入口 db.table('table_name')

1,insert

return db.table('sys_user').insert({ user_name : '李富贵', role : 'admin'})

// insert into sys_user(user_name,role) values('李富贵','admin')

2,update

return db.table('base_dict').primary('code').update({ code: 'insertTerst', name : '测试insert'})

//update base_dict set name = ? where code = ?

3,save

用法和insert相似

return db.table('sys_user').primary('id', uuid()).save({user_name: '李富贵'});

// insert into sys_user(id,user_name) values('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','李富贵');

4,select,page,where

return db.table('sys_user').select()

return db.table('sys_user').page()

return db.table('sys_user')

.where()

.like('user_name','%李富贵%')

.eq('role','admin')

.select()

yml中配置分页参数

magic-api:

page-config:

size: size # 页大小的请求参数名称

page: page # 页码的请求参数名称

default-page: 1 # 未传页码时的默认首页

default-size: 10 # 未传页大小时的默认页大小

自动分页

使用yml中配置的分页参数

return db.page("""select * from base_dict_detail""")

手动分页

跳过前3条记录,然后取5条

return db.page("""select * from base_dict_detail""",5,3)

自定义分页参数获取

实现 PageProvider接口,复写getPage方法 {

public Page getPage(RuntimeContext runtimeContext) {

long page = 2;

long pageSize = 3;

return new Page(pageSize, (page - 1) * pageSize);

}

此模式会覆盖yml的配置内容

目前内置了三种状态码,分别为 执行成功(1),参数验证失败(0),以及系统异常(-1)

自定义状态码

magic-api:

response-code-config:

success: 200 #执行成功的code值

invalid: 400 #参数验证未通过的code值

exception: 500 #执行出现异常的code值

默认返回格式

{

"code": 1, // 状态码

"message": "success", // 状态说明

"data": ..., // 返回的数据内容

"timestamp": 1629610503506, // 服务器时间

"executeTime": 1 // 执行时间

}

自定义返回格式

magic-api:

response: |- #配置JSON格式,格式为magic-script中的表达式

{

code: code,

message: message,

data,

timestamp,

requestTime,

executeTime,

}

自定义结构配置

实现ResultProvider接口,重写buildResult方法

引入swagger依赖

在yml文件中配置

magic-api:

swagger-config:

version: 1.0.0

description: magic测试文档

title: magic测试

name: 配置化实现

location: /v2/api-docs/magic-api/swagger2.json

Magic-api通过springboot自动配置的方式配置了resource,dataSource,interceptor等内容。

在服务启动时,生成MagicConfiguration注入容器时,通过mappingHandlerMapping.registerAllMapping();来注册所有映射(即在界面上配置的接口请求地址和接口的实际处理类、方法的映射)。映射关系注册到handleMapping中,并在内存中通过ConcurrentHashMap来缓存映射关系

接口调用时,在DispatcherServlet中通过url去寻找handler,找到magic-api的统一处理RequestHandler以及处理方法invoke。

在invoke中根据请求方法和路径获取接口信息封装在ApiInfo中,然后进行参数的验证封装。实际脚本的执行,以及对返回结果的包装 关于web api接口开发和web后端api接口开发教程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 web api接口开发的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于web后端api接口开发教程、web api接口开发的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何设置接口测试用例(接口测试用例的编写要点)
下一篇:c 接口设计与实现的(c语言接口与实现怎么样)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~