1. 如何优雅的“编写”api接口文档
1) 编写不方便。每次新增借口的时候都要复制上一个接口,然后再进行修改,一些相同的部分无法复用,接口多了文档会变的很长,还经常需要调整格式。2) 发布不方便。文档更新时,需要发给需要的小伙伴。即使用Git来进行管理,虽然拉取比较方便,但由于文件格式的问题,也不方便比较两次提交的差异。
由于有这些问题,决定寻找一种更优雅有效的方式来编写文档。经过比较,发现了apidoc,可以比较好的解决上面提到的问题。apidoc采用了一种类似写代码注释的方式来写文档,支持编写多种语言的文档。最后生成的文档以网页的形式发布,方便快捷,便于阅读。下面就来简单介绍一下怎么使用apidoc来写文档。
1.安装node
由于apidoc依赖Node.js的包管理工具npm进行安装,所以安装apidoc之前要先安装node.js(npm会在安装node时顺带进行安装)。具体的安装教程可以参考这里。
2.安装apidoc
安装完了npm之后,就可以安装apidoc了。在命令行输入
2. java api接口文档编写
Java语言提供了一种强大的注释形式:文档注释。可以将源代码里的文档注释提取成一份系统的API文档。我们在开发中定义类、方法时可以先添加文档注释,然后使用javadoc工具来生成自己的API文档。
文档注释以斜线后紧跟两个星号(/**)开始,以星号后紧跟一个斜线(*/)作为结尾,中间部分全部都是文档注释,会被提取到API文档中。
自行搜索一下javadoc即可,示例如下:
/**
* 类描述
*
* @author 作者
* @version 版本
*/
public class DemoClass {
/**
* 内部属性:name
*/
private String name;
/**
* Setter方法
* @return name
*/
public String getName() {
return name;
}
/**
* Getter方法
* @param name
*/
public void setName(String name) {
this.name = name;
}
}
3. 如何写一个restful api 简单编写
int max(int a,int b); /*函数说明*/
main() /*主函数*/
{
int x,y,z; /*变量说明*/
int max(int a,int b); /*函数说明*/
printf("input two numbers:\n");
scanf("%d%d",&x,&y); /*输入x,y值*/
z=max(x,y); /*调用max函数*/
printf("maxmum=%d",z); /*输出*/
}
int max(int a,int b) /*定义max函数*/
{
if(a>b)return a;else return b; /*把结果返回主调函数*/
}
4. API是什么意思
API (Application Programming Interface)
所谓API本来是为C和C++程序员写的。API说来说去,就是一种函数,他们包含在一个附加名为DLL的动态连接库文件中。用标准的定义来讲,API就是Windows的32位应用程序编程接口,是一系列很复杂的函数,消息和结构,它使编程人员可以用不同类型的编程语言编制出的运行在Windows95 和Windows NT操作系统上的应用程序。可以说,如果你曾经学过VC,那么API对你来说不是什么问题。但是如果你没有学过VC,或者你对Windows95的结构体系不熟悉,那么可以说,学习API将是一件很辛苦的事情。
如果你打开WINDOWS的SYSTEM文件夹,你可以发现其中有很多附加名为DLL的文件。一个DLL中包含的API函数并不只是一个,数十个,甚至是数百个。我们能都掌握它嘛?回答是否定的∶不可能掌握。但实际上,我们真的没必要都掌握,只要重点掌握Windos系统本身自带的API函数就可以了。但,在其中还应当抛开掉同VB本身自有的函数重复的函数。如,VB 的etAttr命令可以获得文件属性,SetAttr可以设置文件属性。对API来讲也有对应的函数
GetFileAttributes 和SetFileAttributes,性能都差不多。如此地一算,剩下来的也就5、600个。是的,也不少。但,我可以敢跟你说,只要你熟悉地掌握 100个,那么你的编程水平比现在高出至少要两倍。尽管人们说VB和WINDOWS具有密切的关系,但我认为,API更接近
WINDOWS。如果你学会了API,首要的收获便是对WINDOWS体系结构的认识。这个收获是来自不易的。
5. 如何设计一个优秀的API
下图是我自己当下的一些总结,慢慢维护:网上搜索了一下,一个多月前,“标点符”已经发布了下面这篇文章,觉得写得非常不错 --------------------------------------------到目前为止,已经负责API接近两年了,这两年中发现现有的API存在的问题越来越多,但很多API一旦发布后就不再能修改了,即时升级和维护是必须的。
一旦API发生变化,就可能对相关的调用者带来巨大的代价,用户需要排查所有调用的代码,需要调整所有与之相关的部分,这些工作对他们来说都是额外的。如果辛辛苦苦完成这些以后,还发现了相关的bug,那对用户的打击就更大。
如果API经常发生变化,用户就会失去对提供方失去信心,从而也会影响目前的业务。但是我们为什么还要修改API呢?为了API看起来更加漂亮?为了提供更多功能?为了提供更好的性能?还是仅仅觉得到了改变了时候了?对于用户来说,他们更愿意使用一个稳定但是看起来不那么时髦的API,这并不意味着我们不再改进API了。
当糟糕的API带来的维护成本越来越大时,我想就是我们去重构它的时候。如果可以回头重新再做一遍,那么我心目中的优秀的API应该是怎么样的?判断一个API是否优秀,并不是简单地根据第一个版本给出判断的,而是要看随着时间的推移,该API是否还能存在,是否仍旧保持得不错。
槽糕的API接口各种各样,但是好的API接口对于用户来说必须满足以下几个点:易学习:有完善的文档及提供尽可能多的示例和可copy-paste的代码,像其他设计工作一样,你应该应用最小惊讶原则。易使用:没有复杂的程序、复杂的细节,易于学习;灵活的API允许按字段排序、可自定义分页、排序和筛选等。
一个完整的API意味着被期望的功能都包含在内。难误用:对详细的错误提示,有些经验的用户可以直接使用API而不需要阅读文档。
而对于开发人员来说,要求又是不一样的:易阅读:代码的编写只需要一次一次,但是当调试或者修改的时候都需要对代码进行阅读。易开发:个最小化的接口是使用尽可能少的类以及尽可能少的类成员。
这样使得理解、记忆、调试以及改变API更容易。如何做到以上几点,以下是一些总结:1、面向用例设计如果一个API被广泛使用了,那么就不可能了解所有使用该API的用户。
如果设计者希望能够设计出被广泛使用的API,那么必须站在用户的角度来理解如何设计API库,以及如何才能设计出这样的API库。2、采用良好的设计思路在设计过程中,如果能按照下面的方式来进行设计,会让这个API生命更长久面向用例的设计,收集用户建议,把自己模拟成用户,保证API设计的易用和合理保证后续的需求可以通过扩展的形式完成第一版做尽量少的内容,由于新需求可以通过扩展的形式完成,因此尽量少做事情是抑制API设计错误的一个有效方案对外提供清晰的API和文档规范,避免用户错误的使用API,尤其是避免API(见第一节)靠后级别的API被用户知晓与误用除此之外,下面还列出了一些具体的设计方法:方法优于属性工厂方法优于构造函数避免过多继承避免由于优化或者复用代码影响API面向接口编程扩展参数应当是便利的对组件进行合理定位,确定暴露多少接口提供扩展点3、避免极端的意见在设计API的时候,一定要避免任何极端的意见,尤其是以下几点:必须漂亮(API不一定需要漂亮)API必须被正确地使用(用户很难理解如何正确的使用API,API的设计者要充分考虑API被误用的情况:如果一个API可能会被误用,那么它一定会被误用)必须简单(我们总会面临复杂的需求,能两者兼顾的API是更好的API)必须高性能(性能可以通过其他手段优化,不应该影响API的设计)必须绝对兼容(尽管本文一直提到如何保证兼容,但是我们仍然要意识到,一些极少情况下会遇到的不兼容是可以容忍的)4、有效的API评审API设计完成以后,需要经过周密的设计评审,评审的重点如下:用例驱动,评审前必须提供完善的使用用例,确保用例的合理性和完备性。
一致性,是否与系统中其他模块的接口风格一致,是否与对称接口的设计一致。简单明了,API应该简单好理解,容易学习和使用的API才不容易被误用,给我们带来更多的麻烦。
API尽可能少,如果一个API可以暴露也可以不暴露,那么就不要暴露他,等到用户真正有需求的时候再将它成为一个公开接口也不迟。支持持续改进,API是否能够方便地通过扩展的方式增加功能和优化。
5、提高API的可测试性API需要是可测试的,测试不应依赖实现,测试充分的API,尤其是经过了严格的“兼容性整合测试”的API,更能保证在升级的过程中不出现兼容性问题。兼容性整合测试,是指一组测试用例集合,这组测试用例会站在使用者的立场上使用API。
在API升级以后,再检测这组测试用例是否能完全符合预期的通过测试,尽可能的发现兼容性问题。6、保证API的向后兼容对于每一个API的设计者来说,都渴望做到“向后兼容”,因为不管是现在的API用户,还是潜在的API用户,都只信任那些可兼容的API。
但向后兼容有多个层次上的意义,而且不同层次的向后兼容,也意味着不同的重要性和复杂度。7、保持逐步改善过去我们总希望能将。