程序员是公司里的技术岗位,是产品经理最亲密的伙伴。但是程序员可以理解产品经理的工作,产品经理却不一定理解程序员的工作,所以经常被无良程序员欺骗。从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. weex create test-app Error: Cannot find module '../package.json'

    weex create 报错 D:\YLKJPro>weex create test-app Error: Cannot find module '../package.json' at Fun ...

  2. 一文教会你用Apache SeaTunnel Zeta离线把数据从MySQL同步到StarRocks

    在上一篇文章中,我们介绍了如何下载安装部署SeaTunnel Zeta服务(3分钟部署SeaTunnel Zeta单节点Standalone模式环境),接下来我们介绍一下SeaTunnel支持的第一个 ...

  3. hvv蓝初面试常见漏洞问题(上)

    1.SQL注入 漏洞成因: 可控变量 变量会带入数据库查询 变量不存在过滤或者变量过滤不严格 注入流程 判断是否有注入点 order by 判断字段数量 union select 报错查看注入点 使用 ...

  4. MassTransit类库Saga文档翻译

    翻译自 Saga State Machines Saga State Machines(状态机) Saga State Machines(状态机)以前被称为Automatonymous,从v8开始被合 ...

  5. 尤雨溪创立 Vue.js 的心路历程纪录片

    Show More 本文分享自微信公众号 - 生信科技爱好者(bioitee).如有侵权,请联系 support@oschina.cn 删除.本文参与"OSC源创计划",欢迎正在阅 ...

  6. Nginx 反向代理的配置和注意点(成功配置)

    反向代理配置成功 首先,Nginx 和 Java 后端都运行在云服务器的 docker 容器中.ps: 需要确保云服务器端口正常开放,以及两个容器都能被正常的访问. 现在想让 ng 做反向代理达到如下 ...

  7. 如何解决PyCharm中运行不了python代码的问题

    一.问题分析 一般是新手小白才会出现这个问题.刚入门python或者Web自动化测试的集美们很多都会选择使用PyCharm来运行python,但是下载安装完PyCharm后,新建了一个python项目 ...

  8. JavaScript如何解决单线程缺陷——webWorker

    解决JavaScript单线程问题--webWorkers 参考文档 使用 Web Workers - Web API 接口参考 | MDN (mozilla.org) MDN的介绍为: Web Wo ...

  9. Redis数据结构:高频面试题及解析

    概述 Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射. 键的类型只能为字符串,值支持五种数据类型:字符串.列表.集合.散列表.有序集合. Red ...

  10. Python Joblib库使用学习总结

    实践环境 python 3.6.2 Joblib 简介 Joblib是一组在Python中提供轻量级流水线的工具.特别是: 函数的透明磁盘缓存和延迟重新计算(记忆模式) 简单易用的并行计算 Jobli ...