首页 > 解决方案 > Github Job API - 获取职位总数

问题描述

我已经构建了一个复制的 Angular 应用程序:https ://jobs.github.com/positions.api

不幸的是,他们每页只提供 50 个可用位置,

所以为了获取接下来的 50 个作业,我必须将“?page=X”添加到另一个 GET 请求中。

因此,我的 GET 响应只返回第一页。

有没有办法通过仅使用 1 个 GET 请求或任何其他方式来获取头寸总数?

非常感激!

我的代码:

服务.ts

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';


@Injectable({
  providedIn: 'root'
})
export class PositionserviceService {

  // uri = 'https://jobs.github.com/positions'

  constructor(public http: HttpClient) { }

  getAllPositions(){
    return this.http.get('https://cors-anywhere.herokuapp.com/https://jobs.github.com/positions.json');
  }


  getNextPage4(page){
    return this.http.get(`https://cors-anywhere.herokuapp.com/https://jobs.github.com/positions.json?page=${page}`);

  }

}

组件.ts 文件:

import { Component, OnInit } from '@angular/core';
import { PositionserviceService } from '../services/positionservice.service';

@Component({
  selector: 'app-showallpositions',
  templateUrl: './showallpositions.component.html',
  styleUrls: ['./showallpositions.component.css']
})
export class ShowallpositionsComponent implements OnInit {
  positions: Object
  positions4: Object
  isCollapsed = true;
  
  constructor(public positionService: PositionserviceService) { }

  ngOnInit() {
    this.positionService.getAllPositions().subscribe(data => {
      this.positions = data;
      console.log(this.positions)
    })
    // this.getPage4()

  }


  // getPage4(){
  //   this.positionService.getNextPage4().subscribe(data4 => {
  //     this.positions4 = data4;
  //     console.log("Page 4:", this.positions4)
  //   })
  // }

}

标签: javascriptangulartypescriptgithub-api

解决方案


文档对此只字未提。我认为获取所有 json 并将它们合并的循环将是一个可能的解决方案,即使我不建议对 api 进行如此多的调用。

如果您只是在寻找职位的数量,您可以让循环请求每个页面的列表,直到它崩溃。如果您在循环中添加一个计数器并将其结果乘以 50,那么您将非常接近实际数字。

我在这里找到了一些额外的信息。该用户建议您可以从请求中获取最后一页的 url。

您也可以点击此链接,它会在顶部显示工作总数。


推荐阅读