chinapnr / COVID-19-Data-API

Provide COVID-19 data by the Restul API
MIT License
5 stars 0 forks source link

region 接口,使用下来的建议 #23

Closed wingfish closed 4 years ago

wingfish commented 4 years ago
  1. 考虑政治问题,数据库字段和参数名称都不能用 country,避免不必要的麻烦。接口参数的country 修改为 region吧。

  2. 只传region参数,返回:

{"code":"90000","message":"success","data":{"name":"China","confirmed_add":703,"deaths_add":37,"recovered_add":2246,"area":[]}}

没有返回日期,应该这个是最新日期吧。 看到增加确证,增加死亡,增加治愈三个数字,但是没有累计确诊,累计死亡,累计治愈。

我看了新闻,一个国家的当天数字是:新增确诊,确证,死亡,治愈,这四个。

  1. 传国家参数和开始日期,基本正确。

  2. 传region参数,China的话,有特殊情况要处理 是否包含港澳台,设置一个 include_hmt,默认是不包含,符合国内的一般统计口径,如果为True,则计算在China里面。因为字段名称修改,所以港澳台也可以独立传递了。

  3. 武汉的问题,我记得国际数据都是把武汉单列的,所以需要再放一个参数,比如 include_china_wuhan, 默认是true,包含武汉。

  4. 西藏的问题,请老张也确认一下,中国官方的翻译名称是 Xizang还是 Tibet?

  5. 日期范围有错误,如果输入stime和etime,不能显示时间范围内的数据,还是我理解错了,这个给出的是累计数字?刚才讨论了,应该是按照日期列出,不要给累计数。

zhangmuqing commented 4 years ago
  1. 西藏的问题,请老张也确认一下,中国官方的翻译名称是 Xizang还是 Tibet? 我统一改成Xizang了,Tibet有特殊含义
rexyan commented 4 years ago

没有返回日期,应该这个是最新日期吧。看到增加确证,增加死亡,增加治愈三个数字,但是没有累计确诊,累计死亡,累计治愈。

没有传递stime 和 etime,默认是一周的时间区间。如果需要返回 “累计确诊,累计死亡,累计治愈。” 也是返回这段时间内的总计?

武汉的问题,我记得国际数据都是把武汉单列的,所以需要再放一个参数,比如 include_china_wuhan, 默认是true,包含武汉。

查询其他国家也需要返回武汉的数据吗?返回的数据是否放在最外层,不放到 area 中?

应该是按照日期列出,不要给累计数。

层级结构增加日期,显示每日 增加确证,增加死亡,增加治愈

wingfish commented 4 years ago

以后问题的序号还是要跟一下,便于看前面的内容

我把上面的整个问题和大家的答复整理一下:

1 接口参数的country 修改为 region,city 修改为 area;包括返回json中也要修改;

2 如果入参没有日期,则返回最新日期,在返回json中要记录;

3 单个日期来说,比如最新日期,指定日期,返回的是 新增确证,新增死亡,新增治愈,然后是不是要增加累计确诊,累计死亡,累计治愈。也就是一个region或者area,单日期是返回这6个数字。这个也要数据库一起看一下,是否支持;

4 如果是输入日期范围的话,就按照上面这个分日期,而不是自动累加。同样看一下数据库是否支持。日期范围支持返回最近10天。以后看情况再放开。不用考虑累计,如果要累计数的话,只要不穿日期就可以了,得到的就是最新的;

5 如果region是输入China,要考虑港澳台,是否包含港澳台,设置一个 include_hmt,默认是不包含,符合国内的一般统计口径,如果为True,则计算在China里面。因为字段名称修改,所以港澳台也可以独立传递了。

6 武汉的问题,我记得国际数据都是把武汉单列的,所以需要再放一个参数,比如 include_china_wuhan, 默认是true,包含武汉,只有传入region是China,这个参数才有效;

7 西藏的问题,请老张也确认一下,中国官方的翻译名称是 Xizang

zhangmuqing commented 4 years ago

接口

• infection-region o region=国家,可不传,返回全部国家  按天的新增死亡、新增治愈、新增确诊断、累记确证、累计死亡和累计治愈  日汇总数据 o include_hmt=默认True, 包含港澳台,算中国。否则不计算显示港澳台的数据 o start_date和end_date  只输入start_date,返回那天的数据,大于今天报错  只输入end_date,报错  同时输入,返回10天数据,大于报错  都不输入,返回输入库最新一天数据 • infection-region-detail o region=国家,必须传 o 返回某个国家城市的area的  日汇总数据  按天的新增死亡、新增治愈、新增确诊断、累记确证、累计死亡和累计治愈 o include_hmt=True, 包含港澳台,算中国。否则不显示港澳台的数据 o start_date和end_date  只输入start_date,返回那天的数据,大于今天报错  只输入end_date,报错  同时输入,返回10天数据,大于报错  都不输入,返回输入库最新一天数据

rexyan commented 4 years ago

infection/region

环境 HTTP请求地址 备注
测试 /api/v1/infection/region
访问方式 GET
请求头 Token

URL 参数

名称 类型 是否必须 其他限制 描述
region String 国家名称
start_date String 可单独传递,单独表示具体的一天(不可大于今日日期值) 开始日期
end_date String 不可单独传递 截至日期
include_hmt Boolean 默认 True 数据是否包含港澳台

返回示例

{
  "data": {
    "region": {
      // 以 region 名称作为 key,使用时候直接 get("China"), 如果为 array 则需要遍历
      "China": {
        // 以 日期 作为 key,使用时候直接 get("2020-02-02"), 如果为 array 则需要遍历
        "2020-02-02": {
          "confirmed_add": 1, 
          "deaths_add": 1, 
          "recovered_add": 1, 
          "confirmed": 2, 
          "deaths": 2, 
          "recovered": 2
        }, 
        "2020-02-03": {
          "confirmed_add": 1, 
          "deaths_add": 1, 
          "recovered_add": 1, 
          "confirmed": 2, 
          "deaths": 2, 
          "recovered": 2
        }
      }
    }
  }, 
  "message": "success", 
  "return_code": "90000"
}

infection/region/detail

环境 HTTP请求地址 备注
测试 /api/v1/infection/region/detail
访问方式 GET
请求头 Token

URL 参数

名称 类型 是否必须 其他限制 描述
region String 国家名称
start_date String 可单独传递,单独表示具体的一天(不可大于今日日期值) 开始日期
end_date String 不可单独传递 截至日期
include_hmt Boolean 默认 True 数据是否包含港澳台

返回示例

{
  "data": {
    "area": {
       // 以 area 名称作为 key,使用时候直接 get("Chongqiong"), 如果为 array 则需要遍历
      "Chongqiong": {
        // 以 日期 作为 key,使用时候直接 get("2020-02-02"), 如果为 array 则需要遍历
        "2020-02-02": {
          "confirmed_add": 1, 
          "deaths_add": 1, 
          "recovered_add": 1, 
          "confirmed": 2, 
          "deaths": 2, 
          "recovered": 2
        }, 
        "2020-02-03": {
          "confirmed_add": 1, 
          "deaths_add": 1, 
          "recovered_add": 1, 
          "confirmed": 2, 
          "deaths": 2, 
          "recovered": 2
        }
      }
    }
  }, 
  "message": "success", 
  "return_code": "90000"
}
wingfish commented 4 years ago

初步测试下来,region 和 region detail 功能上没有问题,更加仔细的测试和数据检查要继续。

测试代码: `import requests import pandas as pd

url = 'https://covid-19.adapay.tech/api/v1/' token = '497115d0c2ff9586bf0fe03088cfdbe2' region = 'US'

headers = { 'token': token }

payload = { 'region': region, 'start_date': '2020-03-26', 'end_date': '2020-04-04' }

interface: region

r = requests.get(url+'infection/region', params=payload, headers=headers)

data = r.json()

print('---')

json raw data

print(data)

print('---')

filter data

for key, value in data['data']['region'][region].items(): print(key, value)

print('---')

load to dataframe

df = pd.DataFrame.from_dict(data['data']['region'][region]) print(df)

print('---')

rotate dataframe

df = df.T print(df)

interface: region detail

payload = { 'region': region, 'start_date': '2020-03-26', 'end_date': '2020-03-27' }

r = requests.get(url+'infection/region/detail', params=payload, headers=headers)

data = r.json()

print('---')

json raw data

print(data)

print('---')

filter data

for key, value in data['data']['area'].items(): print(key, value)

print('---')

load to dataframe

df = pd.DataFrame.from_dict(data['data']) print(df)

print('---') df = pd.DataFrame.from_dict(data['data']['area']['New York']) print(df)

print('---')

rotate dataframe

df = df.T print(df) `

wingfish commented 4 years ago

region 和 region detail 基本功能测试 ok。