Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何一个接一个地调用web服务端点?

如何一个接一个地调用web服务端点?
EN

Stack Overflow用户
提问于 2020-05-03 17:47:13
回答 2查看 1.9K关注 0票数 0

我想在JavaScript中实现一个函数,它调用一系列web服务端点并检查API调用响应中的值。我需要以这样一种方式实现它:首先调用第一个端点页面,然后使用filter方法从响应中过滤出特定的对象。如果找到该对象,则该进程应中断,并且必须返回该对象。但是,如果在第一个端点中找不到该对象,则必须调用第二个端点,并且重复相同的过程,直到找到该对象。

我正在处理的Web服务端点是:

https://jsonmock.hackerrank.com/api/countries?page=1

此接口返回国家/地区数据列表。在这里,页面查询的值从1到25不等。我需要调用端点并检查从1到25的特定国家,直到找到国家对象。

我尝试使用JavaScript Promise和Fetch API来实现这一点,但想不出一个接一个调用API的方法。

我真的很期待你的答复。提前谢谢你。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-03 17:55:33

您可以使用asyncawait

代码语言:javascript
运行
AI代码解释
复制
async function findCountry(country) {
    for (let page = 1; page < 26; page++) {
        console.log("page = " + page); // for debugging only
        let response = await fetch("https://jsonmock.hackerrank.com/api/countries?page=" + page);
        let {data} = await response.json();
        let obj = data.find(obj => obj.name == country);
        if (obj) return obj;
    }
}

let country = "Belgium";
findCountry(country).then(obj => {
    if (obj) {
        console.log("The capital of " + country + " is " + obj.capital);
    } else {
        console.log("Could not find " + country);
    } 
});

如果您知道数据是按国家名称排序的,那么您可以通过使用二进制搜索来减少请求的平均数量。

票数 1
EN

Stack Overflow用户

发布于 2020-05-03 18:11:30

这里有一种你可以做到的方法。

代码语言:javascript
运行
AI代码解释
复制
const url = 'https://jsonmock.hackerrank.com/api/countries'

const fetchFromApi = async (countryName, page) => {
  const res = await fetch(`${url}?page=${page}`)
  return await res.json()
}

const getCountryFromResults = (countryName, data) => {
  const country = countryName.toLowerCase()
  return data.find(({name}) => name.toLowerCase() === country)
}

const findCountry = async (countryName) => {
  let page = 1;
  let totalPages = 1;

  while(page <= totalPages) {
    const res = await fetchFromApi(countryName, page);
    if(totalPages < res.total_pages) {
      totalPages = res.total_pages
    }
    const country = getCountryFromResults(countryName, res.data)
    if(country){
      return country
    }
    page = page + 1
  }
  
}

( async () => {
  console.log(await findCountry("Afghanistan"))

  console.log(await findCountry("Argentina"))
}
)()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61579060

复制
相关文章
如何开发一个web静态服务器
我们都知道如今的web服务器有很多,比如著名的有apache,有nginx,有tomcat,有resin服务器,有sphere,有iis服务器等等,这些服务器都能提供web服务,并且几乎都能和多种语言进行搭配使用,那么一个web服务器都需要那些功能,开发一个web服务器都需要那些知识呢。
程序那些事儿
2023/03/07
6410
如何开发一个web静态服务器
如何“优雅”地终止一个线程?
我们的系统肯定有些线程为了保证业务需要是要常驻后台的,一般它们不会自己终止,需要我们通过手动来终止它们。我们知道启动一个线程是start方法,自然有一个对应的终止线程的stop方法,通过stop方法可以很快速、方便地终止一个线程,我们来看看stop的源代码。 通过注解@Deprecated看出stop方法被标为废弃的方法,jdk在以后的版本中可能被移除,不建议大家使用这种API。 那为什么这么好的一个方法怎么不推荐使用,还要标注为废弃呢? 假设有这样的一个业务场景,一个线程正在处理一个复杂的业务流程
Java技术栈
2018/03/30
1.5K0
如何建立一个web服务器 web服务器的工作特点
大家想要登录网站并且浏览网站的相关信息,就必须要需要内部的服务器。虽然大家登陆网站这一过程非常的简单,但是在计算机内部需要众多的网站服务器,而且还需要浏览网站的相关协议,这样才能保证信息安全。很多公司刚刚成立的时候为了公司内部的信息安全,会议建立公司的内网,此时大家必须要学会如何建立一个web服务器。
用户8715145
2021/09/17
2.5K0
如何建立一个web服务器 web服务器的工作特点
如何调用一个只支持batch_call的服务?
毕竟唐老哥表示这玩意看多了,看太阳都是绿色的,所以会有专门训练过的算法服务去做检测。
小白debug
2022/06/20
4130
如何调用一个只支持batch_call的服务?
如何优雅地打印一个Java对象?
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下)。
沉默王二
2020/02/17
1.8K0
如何清晰地描述一个项目架构
在介绍功能的时候,最好要有用户视角,而且可能还涉及到多个不同角色的用户。比如ToB的终端用户,B端企业用户,企业老板等
十毛
2019/03/27
5.8K0
如何优雅地实现一个分屏滤镜
本文通过编写一个通用的片段着色器,实现了抖音中的各种分屏滤镜。另外,还讲解了延时动态分屏滤镜的实现。
音视频开发进阶
2019/11/18
7760
一个高性能的web服务是如何搭建的?
用过 Flask 框架的朋友都知道,Flask 自带的 wsgi 性能低下,不支持高并发。
Python编程与实战
2019/12/05
1.2K0
手写一个WEB应用服务
之前有小伙伴向我请教一道笔试题:要求写出一个WEB应用服务,不得使用Servlet接口,用Socket实现,可以响应get请求,打印请求信息,并判断请求资源,若不存在,返回404信息,若资源存在,返回该资源,并且可以返回默认的静态页面。
南风
2018/08/16
2480
手写一个 web 服务器!
作为后端开发人员,在实际的工作中我们会非常高频地使用到web服务器。而tomcat作为web服务器领域中举足轻重的一个web框架,又是不能不学习和了解的。
芋道源码
2020/12/18
1.6K1
手写一个WEB应用服务
之前有小伙伴向我请教一道笔试题:要求写出一个WEB应用服务,不得使用Servlet接口,用Socket实现,可以响应get请求,打印请求信息,并判断请求资源,若不存在,返回404信息,若资源存在,返回该资源,并且可以返回默认的静态页面。
南风
2019/04/22
4200
使用Rust编写一个web服务
最近在深入学习 Rust 语言,本着学以致用的原则,使用 Rust 编写了一个生成二维码的 Web 服务。
杜逸先
2023/04/13
1.8K0
使用Rust编写一个web服务
如何编写一个简单地内核模块
Linux给应用程序提供了丰富的api,但是有时候我们需要跟硬件交互,访问一些特权级信息,所以可以使用编写内核模块这种方式。 另外Linux是宏内核结构,效率非常高,没有微内核那样各个模块之间的通讯损耗,但是又不能方便的对内核进行改动,可扩展性和可维护性比较差,内核模块提供了一种动态加载代码的方式,弥补了宏内核的不足。
yifei_
2022/11/14
1.4K0
如何快速地开发一个chrome扩展插件
说到现如今最流行的浏览器,那么一定是chrome,无论是它的速度,还是它的稳定性,还是它的简洁,都让人爱不释手,此外,更多的人选择它的理由是它有着丰富的扩展插件,这些扩展插件让你的浏览器变得异常强大,让你的浏览器不仅仅是浏览器。
程序那些事儿
2023/07/24
5660
如何快速地开发一个chrome扩展插件
一个简单的AXIS远程调用Web Service示例
我们通常都将编写好的Web Service发布在Tomcat或者其他应用服务器上,然后通过浏览器调用该Web Service,返回规范的XML文件。但是如果我们不通过浏览器调用,而是通过客户端程序调用,该如何实现?      接下来,我们利用Eclipse作为开发工具,演示一个Axis调用WebService的简单示例。步骤如下: 第一步:新建Web Project 。 第二步:导入AXIS类库。(官方下载:http://apache.etoak.com//axis/axis2/java/core
Java学习123
2018/05/16
2.4K0
如何在调用WCF服务之前弹出一个确认对话框?
昨天有人在微博上问我如下一个问题: 老蒋,客户端调用wcf的一个接口函数时,有没有什么办法可以先弹出一个确认框,确认后再执行调用。因为这个接口函数再很多地方都执行了调用,所以我想在某个入口进行统一地
蒋金楠
2018/01/15
1.3K0
如何在调用WCF服务之前弹出一个确认对话框?
一个新实验:使用gRPC-Web从浏览器调用.NET gRPC服务
无法在浏览器中实现gRPC HTTP / 2规范,因为没有浏览器API能够对HTTP请求进行足够的细粒度控制。gRPC-Web通过与HTTP / 1.1和HTTP / 2进行兼容来解决此问题。
依乐祝
2020/02/19
1.6K0
帅地问我:Dubbo服务调用过程
前面丙已经带着大家过了服务暴露和服务引入两个流程了,而这两个流程就是为了服务的调用,今天丙就带着大家来过一遍 Dubbo 服务调用流程。
敖丙
2020/09/22
5260
帅地问我:Dubbo服务调用过程
点击加载更多

相似问题

如何一个接一个地调用方法?

26

一个接一个地调用NSURLConnection

21

一个接一个地调用脚本

18

如何一个接一个地调用异步函数?

213

一个接一个地从java类调用url,一个用于登录,另一个用于web服务调用。

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档