程序员是公司里的技术岗位,是产品经理最亲密的伙伴。但是程序员可以理解产品经理的工作,产品经理却不一定理解程序员的工作,所以经常被无良程序员欺骗。从API接口这个维度,分析API的概念以及为什么要了解它,避免PM们在实际工作中对代码技术一无所知。

在日常工作中,产品经理负责推动项目进展。当他们与程序员对接时,问完成这个功能需要多少天,程序员给出了五天的回答。虽然你的预期时间只有三天,但是你除了相信他,按照承诺给他五天时间之外,也无能为力,最终导致项目的拖延。

你不知道这个函数有多少代码,程序员的工作量有多大。他利用你的无知故意拖延你的项目进度,你是最后一个背黑锅的。

程序员是公司里的终极技术岗位。他能理解我们的工作,但我们很难理解他们。为了防止PM在实际工作中受到无良程序员的伤害,本文从API接口这个维度分析了API的概念以及为什么要理解它,从而避免PM在实际工作中对代码技术的无知。

一、API的概念

API,官方定义为应用编程接口。它指的是一些预定义的接口,用来提供应用程序和开发人员基于某种软件或硬件可以访问的一组例程,而不必访问源代码或了解内部工作机制的细节。

二、为什么要理解API文档?

既然API这么复杂,不属于PM的工作范围,为什么还需要我们费尽心思去理解呢?我们的目的是什么。

1.定义所需的接口服务

API有很多种,最基础的就是产品最需要的,比如短信API、地图API、语音API等。如果我们的产品涉及到这个功能,就必须了解这个API,这样才能在需求设计阶段考虑的更全面。

2.掌握项目开发的工作量,合理安排计划。

说白了就是防止被程序员骗。当你走过去的时候,你发现程序员正在勤奋地工作。不好意思,人家是外包,就是欺负你看不懂代码。你生气了吗?但是,如果你知道接口的难度和工作量,并且明确他需要多长时间才能交给你,项目就不会被耽误,也更有利于项目进程的进度。

3.联合调试测试,识别项目风险点。

一些关键接口,那些数据量大,需要大数据压力测量的接口,必须通过连接测试,测量其更大流量,优化或设置限制,防止系统崩溃。

4.促进项目对接

如果PM懂一点技术,就不会开明显做不到的玩笑,但还是要程序员来做。从这个角度来说,也更有利于团队沟通,更有利于PM和程序员之间的和谐,避免矛盾,不至于打翻友谊之舟。了解API可以让PM对技术有更深刻的理解,更好的衡量开发工作量,制定功能内容。

三。举例说明API的重要性

优点:

开发者A开发了软件A,而开发者B正在开发软件B,A想利用B的一些成果或功能来辅助开发软件B,但不想完全输入软件A。我该怎么办?于是A把软件打包成一个函数,放在B的软件里。这个函数就是API。

如果没有API,B必须经历软件A的全过程,这需要花费大量的时间和精力,但如果是接口来访问一些功能,就简单方便了。想用就用,想拔就拔。

有一杯密封的果汁叫数据库;果汁上面有一根吸管,叫API。想喝杯子里的果汁,因为是密封的,只能靠吸管插入,不然就喝不到果汁了。

在这个故事里,你属于某个系统。要想获得果汁,必须通过一根吸管来实现,也就是一个接口,API,而这个API是数据库中唯一的API。这样,API就是一个提升项目功能和产品价值的辅助工具。

缺点:

由于API依赖于第三方软件,访问方在使用其他软件包的功能的同时,为自己插入了一个监视器,存在惠友友资源网数据泄露给第三方的危险。所以如果是公司的核心功能,更好使用内部API

四。总结:万物皆有联系。

可能大家看了美国科幻大片,把程序员想象成了高智商的黑客。但现实是,大多数情况下,他们只负责修复bug,真正的源代码只是在网上复制粘贴而已。所以不要被他的外表所迷惑,PM的应该知道他的优优资源网的工作量,只需要在团队中给出明确的指令来管理项目的进度,大致了解程序员的工作内容,这样你就可以管理对接了。

最后,我想说,在产品行业,一切都是相通的,PM不必质疑自己的工作,也不必自卑。如果程序员是科学家,那么PM就是一个有友资源网的哲学家,只负责改造自然环境和人类社会的差异。其思维逻辑类似,程序员其实就是PM知识的技术流。

五、API的实际应用

请求示例:前往测试

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.nio.charset.Charset;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.PrintWriter;
import java.net.URLConnection; public class Example {
private static String readAll(Reader rd) throws IOException {
StringBuilder sb = new StringBuilder();
int cp;
while ((cp = rd.read()) != -1) {
sb.append((char) cp);
}
return sb.toString();
}
public static JSONObject postRequestFromUrl(String url, String body) throws IOException, JSONException {
URL realUrl = new URL(url);
URLConnection conn = realUrl.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
PrintWriter out = new PrintWriter(conn.getOutputStream());
out.print(body);
out.flush();
InputStream instream = conn.getInputStream();
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(instream, Charset.forName("UTF-8")));
String jsonText = readAll(rd);
JSONObject json = new JSONObject(jsonText);
return json;
} finally {
instream.close();
}
}
public static JSONObject getRequestFromUrl(String url) throws IOException, JSONException {
URL realUrl = new URL(url);
URLConnection conn = realUrl.openConnection();
InputStream instream = conn.getInputStream();
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(instream, Charset.forName("UTF-8")));
String jsonText = readAll(rd);
JSONObject json = new JSONObject(jsonText);
return json;
} finally {
instream.close();
}
}
public static void main(String[] args) throws IOException, JSONException {
// 请求示例 url 默认请求参数已经URL编码处理
String url = "https://api-gw.onebound.cn/taobao/item_get/?key=<您自己的apiKey>&secret=<您自己的apiSecret>&num_iid=652874751412&is_promotion=1";
JSONObject json = getRequestFromUrl(url);
System.out.println(json.toString());
} }

如何做一个api接口?的更多相关文章

  1. 收集免费的接口服务,做一个api的搬运工

    hello, 大家好,今天给大家推荐的开源项目在某种程度上极大的方便了广大的开发者,这个开源项目统计了网上诸多的免费API,为广大开发者收集免费的接口服务,专心致志做一个API的搬运工,每月定时更新新 ...

  2. 用 shell 脚本做 restful api 接口监控

    问题的提出 基于历史原因,公司有一个"三无"采集服务--无人员.无运维.无监控--有能力做的部门不想接.接了的部门没能力.于是就一直这样裸奔,直到前几天一个依赖于这个采集服务的大数 ...

  3. 发现一个API接口自动化测试平台

    gitee地址:https://gitee.com/season-fan/autometer-api 记录一下: 1.API测试平台的5个需求: ①支持不同的项目,不同的角色,技术人员多人协作 ②支持 ...

  4. 一步一步学swift之:自己写Api接口-PHP

    想要自己一个人完成app,那么后台接口也必须自己动动手.不用担心,其实很简单的,给自己信心!下面就以登录注册为例,做一个api接口 首先在mac上搭建PHP环境,下载 MAMP Pro for Mac ...

  5. ApsNetCore打造一个“最安全”的api接口

    Authentication,Authorization 如果公司交给你一个任务让你写一个api接口,那么我们应该如何设计这个api接口来保证这个接口是对外看起来"高大上",&qu ...

  6. 各开放平台API接口通用SDK序列文章 前言

    最近两年一直在做API接口相关的工作,在平时工作中以及网上看到很多刚接触API接口调用的新人一开始会感到很不适应,要看的文档一大堆,自己要调用的接口找不着,或都找着了不知道怎么去调用,记得包括自己刚开 ...

  7. vue中Axios的封装和API接口的管理

    前端小白的声明: 这篇文章为转载:主要是为了方便自己查阅学习.如果对原博主造成侵犯,我会立即删除. 转载地址:点击查看 如图,面对一团糟代码的你~~~真的想说,What F~U~C~K!!! 回归正题 ...

  8. beego应用做纯API后端如何使用jwt实现无状态权限验证

    jwt是什么,可以百度下其它文章,我原来看到一个讲的详细的,现在找不到了.先简单介绍下我个人的理解,就是一个token,只不过通过加密解密的手段,能让这一串字符带有一些简单的信息.这样解密jwt后不用 ...

  9. Node教程——API接口开发(Node版的CRUD通用接口的搭建)(MangoDB+Express_Version2)

    1. 概述 时间跨度有点大,之前就跟大家唠嗑过一些知识点,也开启了一个Node书写一个后台api项目的开始,出于各种原因,迟迟没有更新博文.现在我把这个坑填上,如果你还有阅读过我之前的文章,我建议你先 ...

  10. 由一次安全扫描引发的思考:如何保障 API 接口的安全性?

    引言 前段时间,公司对运行的系统进行了一次安全扫描,使用的工具是 IBM 公司提供的 AppScan . 这个正所谓不扫不要紧,一扫吓一跳,结果就扫出来这么个问题. 我们的一个年老失修的内部系统,在登 ...

随机推荐

  1. < Python全景系列-3 > Python控制流程盘点及高级用法、神秘技巧大揭秘!

    欢迎来到我们的系列博客<Python全景系列>!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语法.无论你是编程新手,还是有一 ...

  2. 用token辅助 密码爆破

    第一步:打开皮卡丘,点击暴力破解,token防爆破,输入正确用户名,错误密码 BP拦截请求,点击皮卡丘Login,然后拦截后, 发送给Intruder 第二步: 爆破方式选择音叉方式,   & ...

  3. odoo开发教程十三:qweb报表

    一:概述 报表是使用qweb定义的,报表的pdf导出是使用wkhtmltopdf来完成的. 如果需要为一个模型创建报表,需要定义report及对应模板. 如果有需要的话还可以指定特定的纸张格式, 如果 ...

  4. 【最佳实践】如何设计 RESTful API ?

    良好的 API 设计是一个经常被提及的话题,特别是对于那些试图完善其 API 策略的团队来说.一个设计良好的 API 的好处包括:改进开发者体验.更快速地编写文档以及更高效地推广你的 API.但是,到 ...

  5. 如何通过CAD图中的坐标来确定是哪个坐标系

    国内常见的坐标系 坐标系分为以下两种: 地理坐标系(Geographic Coordinate System, GCS) 投影坐标系(Projected Coordinate System, PCS) ...

  6. 使用脚本收发 protobuf 协议数据

    问题背景 最近做了一个 ipv6 相关的功能,发现使用 getifaddrs 获取的本地 ipv6 地址有可能不是真实的网络 ipv6 地址: 例如上图中通过 getifaddrs 获得了多个本地 i ...

  7. vue3实现H5网页录音并上传(mp3、wav)兼容Android、iOS和PC端

    使用 Recorder插件 可以在HTML5网页中进行录音,录音完成后得到blob文件对象,然后将blob上传到服务器:项目使用的vue3.0版本(这个插件同时支持vue2.0.也支持uniapp,很 ...

  8. GO 项目依赖管理:go module总结

    转载请注明出处: 1.go module介绍 go module是go官方自带的go依赖管理库,在1.13版本正式推荐使用 go module可以将某个项目(文件夹)下的所有依赖整理成一个 go.mo ...

  9. 【Netty】Netty部分源码分析(启动流程,EventLoop,accept流程,read流程)

    源码分析 Netty源码中调用链特别长,且涉及到线程切换等步骤,令人头大:) 1 启动剖析 我们就来看看 netty 中对下面的代码是怎样进行处理的 //1 netty 中使用 NioEventLoo ...

  10. 【神经网络】基于GAN的生成对抗网络

    目录 [神经网络]基于GAN的生成对抗网络 随着深度学习的快速发展,神经网络逐渐成为人工智能领域的热点话题.神经网络是一种模仿人脑计算方式的算法,其通过大量数据和复杂的计算模型,能够实现复杂的任务和预 ...