展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > 如何在Python中使用API?

如何在Python中使用API?

APIAPI:简单来说就是一组协议、一个工具或者一组规则,定义不同应用程序之间的通信方法,把具体实现的过程隐藏起来,只暴露必须调用的部分给开发者使用。上面的定义比较官方,这里简单举个例子来说明一下,比如在现在外面的麦当劳等快餐店都采取手机线上下单,前台拿餐的过程。而在这个过程,作为消费者通常在手机上选好对应的餐品然后点击下单付款,然后等待前台叫号拿餐即可。而这个过程具体怎么实现的我们并不知道,整个过程有对应的app或者小程序通信到厨房数据,然后厨师制作出餐。而这个APP和小程序就充当对应的API功能。举一

本文目录

    如何在Python中使用API?

    API

    API:简单来说就是一组协议、一个工具或者一组规则,定义不同应用程序之间的通信方法,把具体实现的过程隐藏起来,只暴露必须调用的部分给开发者使用。

    上面的定义比较官方,这里简单举个例子来说明一下,比如在现在外面的麦当劳等快餐店都采取手机线上下单,前台拿餐的过程。而在这个过程,作为消费者通常在手机上选好对应的餐品然后点击下单付款,然后等待前台叫号拿餐即可。而这个过程具体怎么实现的我们并不知道,整个过程有对应的app或者小程序通信到厨房数据,然后厨师制作出餐。而这个APP和小程序就充当对应的API功能。

    举一个简单的例子,一个社交平台它每天收到各种语言的评论信息,而作为对应的分析人员面对复杂的语言数据处理,是一个大难题,有人可能说开发一个模型来实现翻译整合功能,这个方法虽然听起来可行但是成本代价高,其次为了解决一个问题,而又去开发一个比较困难的问题。这个与原本的目标偏离越来越远,这个时候就可以借助国内比较成熟的翻译平台API,直接处理现有的数据。这样相对而言成本代价小,更便捷也更能快速实现现有的目标。而API的作用在这里就毋庸置疑了。

    数据接口

    数据接口: 简单来说就是一组封装的数据集口令,就是按照对应的规则发送相应的参数,然后返回对应的相关数据信息。API的调用和数据接口的这两个在日常调用时很类似的,相对而言API的范围更宽广,实现的功能也比较多,而数据接口日常充当的就是一个取数工具比较多。

    就比如说大型电商公司公司一般用统一的SKU来对商品进行管理,而比如这家公司是作为一个品牌商,它会在不同平台上面进行售卖,而在这些平台上面映射的商品标识ID就不同于公司的SKU。因为公司的SKU不仅基于商品而且还考虑各个地方仓库以及产品的各个型号,而这个映射相对而言就比较复杂。
    而在处理不同平台的数据人员一般也不能直接使用公司的数据库来对商品进行分析,因为颗粒度太细,分析起来比较复杂困难,这个时候就可以根据对应功能的要求让开发在现有系统是开发一个单独的数据接口提供相应的公司,避免直接请求数据库过程复杂等相应信息。但数据接口相对实时的数据库存在一定的延迟。

    API的调用和数据接口的调用

    API和数据接口通过前面的举例论述,大致理解起来也比较简单,而具体怎么实现API的调用和数据接口的调用这里简单介绍一下。
    简单来说API的调用和接口的调用都是类似一个HTTP请求,而调用最主要就是根据相应的规则将请求方式、请求头、URL、以及请求体封装好然后发送请求,就可以实现相应的调用。

    但数据接口和API两个的调用相比较而言来,一般数据接口比较简单,很多情况下数据接口是在公司内网数据访问所以请求信息比较简单,而API大多是第三方企业开发对外的服务属于一种商业服务,相对而言为了保证请求的安全,考虑的更为全面,加入了AK、SK、签名、时间戳等信息比较复杂。
    而追本溯源这两个调用都是类似HTTP请求,具体调用大致差不多,主要就是API调用中包含的请求参数的信息更多。而具体怎么实现下面将简单的介绍一下。

    调用的基础-请求方法

    一般而言,常见的HTTP请求调用方式有很多,这方面的资源比较多,可以网上自己查阅,这里就简单说说常见的两种请求方法。

    GET 请求

    GET请求简单来说就是从服务器上获取资源,可以载入到浏览器的缓存中。

    POST 请求

    POST请求一般而言以表单形式向服务器发送请求,请求参数包含在请求体当中可能导致资源的创建和改变。POST请求的信息不能缓存在浏览器中。
    这两个请求方法说起来很简单,但最重要的一点就是了解这两种请求的区别,从而为接口的设计和API的使用更加熟悉。

    GET和POST请求的区别

    1.GET请求请求长度最多1024kb,POST对请求数据没有限制。这一点原因是很多时候GET请求把对应的信息放在URL中,而URL的长度有限,导致GET请求的长度也受到一定的限制。而POST请求相应的参数信息放在请求体body中所以一般不受长度限制。
    2.POST请求比GET更安全一些,因为GET请求中URL包含了相应的信息,页面会被浏览器缓存,其他人可以看到相应的信息。
    3.GET产生一个TCP数据包,POST产生两个TCP数据包。
    GET请求的时候将header、data一起发送出去,然后服务器响应返回200。而POST则是先发送header,等待服务器响应100,然后发送data,最后服务器响应返回200.但在这里注意,POST请求分为两次,但是请求体body是紧随在header之后发送的,所以这之间时间可以微乎不计。
    4.GET请求只支持URL编码,而POST相对而言有多种编码方式。
    5.GET请求参数是通过URL传递的,多个参数以&连接,POST请求放在request body中。
    6.GET请求只支持ASCII字符,而POST没有限制。
    一般而言浏览器输入网址可以直接访问的一般是GET请求。

    Python实现GET请求和POST请求

    上面大篇幅的介绍了一些数据接口、API相关知识以及请求方法,使用起来比较简单,下面可以大致熟悉一下相应的请求方式。一般直接使用Python的request库就可以。

    GET请求
    import request
    # GET请求发送的参数一定要是字典的形式,可以发送多个参数。
    # 发送格式:{'key1':value1', 'key2':'value2', 'key3', 'value3'}
    # 样例不能运行
    url ='http://www.xxxxx.com'
    params = {'user':'lixue','password':111112333}
    requests.get(url,data = parms)
    POST请求

    POST请求一般有三种提交形式:application/x-www-form-urlencoded、multipart/form-data、application/json.
    具体查看是三种的哪一种请求方式:谷歌浏览器检查 → Network →选择加载文件 → Headers → Reuqest Headers → Content-Type
    具体编码方式为下面三种,可以了解具体的请求实现,一般公司内部的数据接口设置了局域网所以有的可以不需要加header。

    POST请求的三种提交形式

    1.最常见的post提交数据以form表单为主:application/x-www-form-urlencoded

    import request
    data={'k1':'v1','k2':'v2'}
    headers= {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}
    requests.post(url,headers = headers,data=data)

    2.以json格式提交数据:application/json

    data = {'user':'lixue','password':12233}
    data_json = json.dumps(params)
    requests.post(url,headers = headers,data = data_json)

    3.一般用来传文件(爬虫很少用到):multipart/form-data

    files = {'files':open('c://xxx.txt','rb')}
    requests.post(url = url,headers = headers,files = files)
    一个简单API请求的实例

    通过上面简单的介绍,对于具体请求大致了解,这里搜集了一个简单的API聚合中心,提供了很多挺好用的功能。下面以这个简单API的作一个简单的示范API地址。
    这个小实例采取的是天气API接口获取近15天的天气。在使用这个API之前记得获取相应的apiKey和查看具体的使用文档。这个API网站一般对相应API提供一定的免费次数,可以充当学习使用,而且支持GET和POST请求。刚好可以适合练手。

    GET请求
    params = {
        "apiKey":'换成你的apikey',
        "area":'武汉市',
    }
    url = 'https://api.apishop.net/common/weather/get15DaysWeatherByArea'
    response = requests.get(url,params)
    print(response.text)
    POST请求

    这里的POST请求也就是对应上面的最常见的post提交数据以form表单为主:application/x-www-form-urlencoded

    url = 'https://api.apishop.net/common/weather/get15DaysWeatherByArea'
    params = {
        "apiKey":'换成你的apikey',
        "area":'武汉市武昌区',
    }
    response = requests.post(url,params)
    print(response.text)

    在调用这种API接口一般都需要进行一个状态码等返回信息测试,检查请求是否正常,可以按照下面的给出参考。

    params = {
        "apiKey":'换成你的apikey,
        "area":'武汉市',
    }
    url = 'https://api.apishop.net/common/weather/get15DaysWeatherByArea'
    response = requests.post(url,params)
    print(response.text)
    if response.status_code != 200:
        raise ConnectionError(f'{url} status code is {response.status_code}.')
    response = json.loads(response.content)
    if 'desc' not in response.keys():
        raise ValueError(f'{url} miss key msg.')
    if response['desc'] != '请求成功':
        print(11)
    数据提取

    其实API的调用很简单,但其中最核心的其实是返回信息中数据的抽取,一般而言返回的信息都是json形式,需要从中用字典键值对方式提取数据,下面这块根据请求的数据返回相应的信息并提取出来,获取信息后面将会展示。

    import requestsimport pandas as pd 
    import numpy as npimport jsondef get_url(area):
        url = 'https://api.apishop.net/common/weather/get15DaysWeatherByArea'
        params = {
            "apiKey":'换成你的apikey',
            "area":area,
        }
        response = requests.get(url,params)
        if response.status_code != 200:
            raise ConnectionError(f'{url} status code is {response.status_code}.')
        response = json.loads(response.content)
        if 'desc' not in response.keys():
            raise ValueError(f'{url} miss key msg.')
        if response['desc'] != '请求成功':
            print(11)
        return responsedef  extract_data(web_data):
        data= web_data['result']['dayList']
        weather_data = pd.DataFrame(columns = ['city','daytime','day_weather','day_air_temperature','day_wind_direction','day_wind_power',                                           'night_weather','night_air_temperature','night_wind_direction','night_wind_power'])
        for i in range(len(data)):
            city = data[i]["area"]
            daytime = data[i]["daytime"]
            daytime = daytime[:4]+'-'+daytime[4:6]+'-'+daytime[-2:]
            day_weather = data[i]["day_weather"]
            day_air_temperature = data[i]['day_air_temperature']
            day_wind_direction = data[i]["day_wind_direction"]
            day_wind_power = data[i]['day_wind_power']
            night_weather = data[i]['night_weather']
            night_air_temperature = data[i]["night_air_temperature"]
            night_wind_direction = data[i]['night_wind_direction']
            night_wind_power = data[i]["night_wind_power"]
            c = {"city": city,"daytime": daytime,"day_weather":day_weather,"day_air_temperature":day_air_temperature,
                 "day_wind_direction":day_wind_direction,"day_wind_power":day_wind_power,"night_weather":night_weather,
                 "night_air_temperature":night_air_temperature,"night_wind_direction":night_wind_direction,
                 "night_wind_power":night_wind_power}
            weather_data = weather_data.append(c,ignore_index = True)
        weather_data.to_excel(r"C:\Users\zhangfeng\Desktop\最近十五天天气.xlsx",index = None)
        return weather_dataif __name__ == '__main__':
        print("请输入对应的城市")
        web_data = get_url(input())
        weather_data = extract_data(web_data)

    部分结果如下图:
    如何在Python中使用API?

    数据接口实例

    在日常学习中数据接口的使用可能相对较少,数据接口的应用场景大多数情况下是应用在公司内部调取数据的情况下比较多,所以一般很少见到,这里展示工作中遇到的两个数据接口的使用,由于工作考虑,展示的代码属于样例,并不能调用。可以参考一下调用实现以及规范。

    POST请求调用数据接口
    # 销售状态查询def id_status(id_dir):
        id_data = pd.read_excel(id_dir,sheet_name="Sheet1") 
        id_data.columns = ['shop', 'Campaign Name','Ad Group Name','Item Id']  # 方便后期处理更改列名
        id_data["Item Id"] = id_data["Item Id"].astype(str)
        id_list = list(id_data['Item Id'])
        print(len(id_list))
        id_list = ','.join(id_list)
        if isinstance(id_list, int):
            id_list = str(id_list)
        id1 = id_list.strip().replace(',', ',').replace(' ', '')
        request_url = "http://xxx.com"
        # 通过item_id查询id状态
        params = {
            "item_id":id1,
        }
        data_json = json.dumps(params) # 属于POST第二种请求方式
        response = requests.post(request_url, data = data_json)
        print(response.text)
        if response.status_code != 200:
            raise ConnectionError(f'{request_url} status code is {response.status_code}.')
        response = json.loads(response.content)
        if 'message' not in response.keys():
            raise ValueError(f'{request_url} miss key msg.')
        if response['message'] != 'ok':
            print(11)
        data= response['result']
        ad_data = pd.DataFrame(columns = ['Item Id','saleStatusName'])
        for j in range(len(data)):
            item_id =data[j]["item_id"]
            saleStatusName = data[j]['saleStatusName']
            c = {"Item Id": item_id,
             "saleStatusName": saleStatusName,
             }
            ad_data = ad_data.append(c,ignore_index = True)
        total_data = pd.merge(ad_data,id_data,on ='Item Id', how ='left')
        df_column =  ['shop', 'Campaign Name','Ad Group Name','Item Id','saleStatusName']
        total_data = total_data.reindex(columns=df_column)
        return total_data
    GET请求调用数据接口
    ### 库存数据查询def Smart_investment_treasure(investment_dir):
        product_data = pd.read_excel(investment_dir,sheet_name="product")
        if len(product_data)>0:
            product_data['商品ID']=product_data['商品ID'].astype(str)
            product_list=list(product_data['商品ID'])
            product_id = ','.join(product_list)
        else:
            product_id='没有数据' 
        return product_id    
    def stock_query(investment_dir):
            product_data = pd.read_excel(investment_dir,sheet_name="product")
        if len(product_data)>0:
            product_data['商品ID']=product_data['商品ID'].astype(str)
            product_list=list(product_data['商品ID'])
            product_id = ','.join(product_list)
        else:
            product_id='没有数据' 
        if isinstance(product_id, int):
            product_id = str(id)
        product_id = product_id.strip().replace(',', ',').replace(' ', '')
        request_url = "http://xxx.com"
        # 通过ali_sku查询erpsku
        params = {
            "product_id":product_id,
        }
        
        response = requests.get(request_url, params) #属于GET请求
        if response.status_code != 200:
            raise ConnectionError(f'{request_url} status code is {response.status_code}.')
        response = json.loads(response.content)
        if 'msg' not in response.keys():
            raise ValueError(f'{request_url} miss key msg.')
        if response['msg'] != 'success':
            print(11)
        data= response['data']['data']
        # requestProductId = id.split(',')
        id_state=[]
        overseas_stock=[]
        china_stock=[]
        id_list=[]
        for j in range(len(data)):
            inventory_data= data[j]['list']
            overseas_inventory=0
            ep_sku_list=[]
            sea_test=0
            china_inventory=0
            test="paused"
            id_test=""
            id_test=data[j]['product_id']
            for i in range(len(inventory_data)):
                if inventory_data[i]["simple_code"] in ["FR","DE","PL","CZ","RU"] and inventory_data[i]["erp_sku"] not in ep_sku_list:
                    overseas_inventory+=inventory_data[i]["ipm_sku_stock"]
                    ep_sku_list.append(inventory_data[i]["erp_sku"])
                    sea_test=1
                elif inventory_data[i]["simple_code"] == 'CN':
                    china_inventory+=int(inventory_data[i]["ipm_sku_stock"])
            if overseas_inventory>30:
                test="open"
            elif overseas_inventory==0 and china_inventory>100:
                test="open"
            id_list.append(id_test)
            overseas_stock.append(overseas_inventory)
            china_stock.append(china_inventory)           
            id_state.append(test)
        c={"id":id_list,
           "id_state":id_state,
           "海外仓库存":overseas_stock,
           "国内大仓":china_stock       }
        ad_data=pd.DataFrame(c)
        return ad_data

    几种常见API调用实例

    百度AI相关API

    百度API是市面上面比较成熟的API服务,在大二期间由于需要使用一些文本打标签和图像标注工作了解了百度API,避免了重复造轮子,当时百度API的使用比较复杂,参考文档很多不规范,之前也写过类似的百度API调用极其不稳定,但最近查阅了百度API参考文档,发现目前的调用非常简单。
    通过安装百度开发的API第三方包,直接利用Python调包传参即可使用非常简单。这里展示一个具体使用,相应安装第三方库官方文档查阅。

    '''
    第三方包名称:baidu-aip 
    百度API 
    """ 你的 APPID AK SK """
    APP_ID = '你的 App ID'
    API_KEY = '你的 Api Key'
    SECRET_KEY = '你的 Secret Key'
    参考文档:https://ai.baidu.com/ai-doc/NLP/tk6z52b9z
    '''
    from aip import AipNlp
    APP_ID = 'xxxxxx'
    API_KEY = '换成你的apikey'
    SECRET_KEY = '换成你的SECRET_KEY'
    client = AipNlp(APP_ID, API_KEY, SECRET_KEY)
    text = "我还没饭吃"
    # 调用文本纠错 
    client.ecnet(text)

    如何在Python中使用API?

    百度地图API

    这个API当时为了设计一个推荐体系引入经纬度换算地址,这样为数据计算带来极大的方便,而且对于一般人来说文本地址相比经纬度信息更加直观,然后结合Python一个第三方包实现两个地址之间经纬度计算得出相对的距离。

    # https://lbsyun.baidu.com/
    # 计算校验SN(百度API文档说明需要此步骤)
    import pandas as pd
    import numpy as np
    import warnings
    import requests
    import urllib
    import hashlib
    import json
    from geopy.distance import geodesic
    location = input("输入所在的位置\n")  # "广州市天河区"
    ak = "ak1111" # 参照自己的应用
    sk = "sk111111" # 参照自己的应用
    url = "http://api.map.baidu.com"
    query = "/geocoding/v3/?address={0}&output=json&ak={1}&callback=showLocation".format(location, ak)
    encodedStr = urllib.parse.quote(query, safe="/:=&?#+!$,;'@()*[]")
    sn = hashlib.md5(urllib.parse.quote_plus(encodedStr + sk).encode()).hexdigest()
    # 使用requests获取返回的json
    response = requests.get("{0}{1}&sn={2}".format(url, query, sn))
    data1=response.text.replace("showLocation&&showLocation(","").replace(")","")
    data = json.loads(data1)
    print(data)
    lat = data["result"]["location"]["lat"]
    lon = data["result"]["location"]["lng"]
    print("纬度: ", lat, " 经度: ", lon)
    distance=geodesic((lat,lon), (39.98028,116.30495))
    print("距离{0}这个位置大概{1}".format(location, distance))

    如何在Python中使用API?

    有道API

    在网上查阅了很多API,前面介绍的几种API,他们携带的请求参数信息相对比较简单,调用实现和基础请求没啥区别,这里找了一个相对而言比较多的请求参数的API,相对而言这种API数据付费API,它的安全性以及具体的实现都相对复杂,但是更适合商用。下面可以简单看看。

    import requests
    import time
    import hashlib
    import uuid
    youdao_url = 'https://openapi.youdao.com/api'   # 有道api地址
    translate_text = "how are you!"
    input_text = ""
    # 当文本长度小于等于20时,取文本
    if(len(translate_text) <= 20):
        input_text = translate_text    
    # 当文本长度大于20时,进行特殊处理
    elif(len(translate_text) > 20):
        input_text = translate_text[:10] + str(len(translate_text)) + translate_text[-10:]
    
    uu_id = uuid.uuid1()
    now_time = int(time.time())
    app_id = '1111111'
    app_key = '11111111111'
    sign = hashlib.sha256((app_id + input_text + str(uu_id) + str(now_time) + app_key).encode('utf-8')).hexdigest()   # sign生成
    data = {
        'q':translate_text,   # 翻译文本
        'from':"en",   # 源语言
        'to':"zh-CHS",   # 翻译语言
        'appKey':app_id,   # 应用id
        'salt':uu_id,   # 随机生产的uuid码
        'sign':sign,   # 签名
        'signType':"v3",   # 签名类型,固定值
        'curtime':now_time,   # 秒级时间戳
    }
    r = requests.get(youdao_url, params = data).json()   # 获取返回的json()内容
    print("翻译后的结果:" + r["translation"][0])   # 获取翻译内容

    翻译后的结果:你好!
    这个API调用中引用了几个真正商用中的一些为了安全性等设置的验证信息,比如uuid、sign、timestamp,这几个在API调用中也是老生常谈的几个概念,是比较全面的。下面简单介绍一下。

    uuid

    uuid码:UUID是一个128比特的数值,这个数值可以通过一定的算法计算出来。为了提高效率,常用的UUID可缩短至16位。UUID用来识别属性类型,在所有空间和时间上被视为唯一的标识。一般来说,可以保证这个值是真正唯一的任何地方产生的任意一个UUID都不会有相同的值。使用UUID的一个好处是可以为新的服务创建新的标识符。是一种独特的唯一标识符,python 第三方库uuid 提供对应的uuid生成方式,有以下的几种 uuid1(),uuid3(),uuid4(),uuid5()上面采用的是uuid1()生成,还可以使用uuid4()生成。

    sign

    sign:一般为了防止被恶意抓包,通过数字签名等保证API接口的安全性。为了防止发送的信息被串改,发送方通过将一些字段要素按一定的规则排序后,在转化成密钥,通过加密机制发送,当接收方接受到请求后需要验证该信息是否被篡改过,也需要将对应的字段按照同样的规则生成验签sign,然后在于后台接收到的进行比对,可以发现信息是否被串改过。在上面的例子利用hashlib.sha256()来进行随机产生一段密钥,最后使用.hexdigest()返回最终的密钥。
    curtime:引入一个时间戳参数,保证接口仅在一分钟内有效,需要和客户端时间保持一致。避免重复访问。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Python API
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    Postman macOS版
    Postman macOS版

    Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。

    Docker Desktop macOS版
    Docker Desktop macOS版

    Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。

    Android Studio macOS版
    Android Studio macOS版

    Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。

    Xcode macOS版
    Xcode macOS版

    Xcode 是苹果面向 Mac 提供的官方集成开发环境,将代码编辑、项目构建、SwiftUI 实时预览、设备模拟、自动化测试、断点调试、性能分析和应用分发整合在同一套工作流中,适合开发与维护 iPhone、iPad、Mac、Apple Wa

    JetBrains WebStorm macOS版
    JetBrains WebStorm macOS版

    JetBrains WebStorm 是面向 JavaScript、TypeScript 和现代 Web 技术的专业集成开发环境,可智能理解项目结构,提供代码补全、重构、错误检查、运行调试、测试及 Git 工具。

    PhpStorm macOS版
    PhpStorm macOS版

    PhpStorm 是 JetBrains 推出的专业 PHP 集成开发环境,可在 Mac 上完成代码编写、智能检查、重构、调试、测试和数据库管理。它支持主流 PHP 框架、Composer、Git、Docker 与远程解释器。

    JetBrains PyCharm macOS版
    JetBrains PyCharm macOS版

    JetBrains PyCharm 是面向 Python 开发者的集成开发环境,提供智能补全、代码检查、重构、调试、测试、版本控制及虚拟环境管理功能。Mac 版兼容 Intel 与 Apple 芯片,核心功能可免费使用。

    JetBrains IntelliJ IDEA macOS版
    JetBrains IntelliJ IDEA macOS版

    IntelliJ IDEA 是 JetBrains 推出的专业集成开发环境,重点服务于 Java、Kotlin 与 JVM 项目开发。软件集成代码补全、静态检查、重构、调试、测试、版本控制及构建工具,并可借助插件扩展语言和框架支持。

    Visual Studio Code macOS版
    Visual Studio Code macOS版

    Visual Studio Code 是微软提供的免费代码编辑器,支持 macOS,并为 Intel 与 Apple 芯片 Mac 提供适配版本。软件集代码编辑、调试、Git 源代码管理、集成终端和扩展市场于一体。

    REAPER macOS版
    REAPER macOS版

    REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。

    Adobe Audition macOS版
    Adobe Audition macOS版

    Adobe Audition 是面向播客、影视后期、音乐制作及内容创作者的专业音频工作站,提供波形精修、多轨录制与混音、频谱编辑、降噪修复、响度匹配和效果处理工具,并可与 Adobe Premiere 协同完成视频声音制作。

    Pro Tools macOS版
    Pro Tools macOS版

    Pro Tools 是 Avid 推出的专业数字音频工作站,覆盖多轨录音、无损剪辑、MIDI 编曲、插件处理、自动化混音及声音与画面同步等工作。它拥有 Intro、Artist、Studio 和 Ultimate 等方案。

    WINDOWS 更多
    PixPix 网页版
    PixPix 网页版

    PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。

    Postman Windows版
    Postman Windows版

    Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等

    Docker Desktop Windows版
    Docker Desktop Windows版

    Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。

    Android Studio Windows版
    Android Studio Windows版

    Android Studio 是 Google 面向 Android 应用开发提供的官方集成开发环境,以 IntelliJ IDEA 为基础,集成智能代码编辑、Gradle 构建、设备模拟、界面预览、调试测试及性能分析工具,

    JetBrains WebStorm Windows版
    JetBrains WebStorm Windows版

    WebStorm 是 JetBrains 面向 JavaScript、TypeScript 和现代 Web 技术打造的集成开发环境。它提供项目级代码分析、智能补全、安全重构、导航搜索,并集成调试、测试、终端、Git 与常用前端工具,

    JetBrains PhpStorm Windows版
    JetBrains PhpStorm Windows版

    PhpStorm 是 JetBrains 面向 PHP 与现代 Web 开发打造的专业集成开发环境,提供代码补全、静态检查、重构、调试、测试、数据库、版本控制及前端语言支持。Windows 用户可直接下载安装程序,

    JetBrains PyCharm Windows版
    JetBrains PyCharm Windows版

    PyCharm 是 JetBrains 推出的 Python 集成开发环境,提供智能代码补全、错误检查、重构、调试、测试、Git、终端及 Jupyter Notebook 支持。统一版安装后可体验 30 天 Pro 功能,

    JetBrains IntelliJ IDEA Windows版
    JetBrains IntelliJ IDEA Windows版

    JetBrains IntelliJ IDEA 是以 Java、Kotlin 和 JVM 项目为核心的专业集成开发环境,提供智能补全、代码检查、安全重构、调试、测试、版本控制及构建工具集成。统一发行版的核心功能可免费用于商业和非商业项目,

    Visual Studio Code Windows版
    Visual Studio Code Windows版

    Visual Studio Code 是微软推出的免费代码编辑器,Windows 版集成智能补全、代码导航、调试、终端和版本控制,并可通过扩展添加语言、格式化及远程开发能力。它启动较快、配置灵活,

    REAPER Windows版
    REAPER Windows版

    REAPER 是 Cockos 推出的数字音频工作站,适用于录音、MIDI 编曲、音频编辑、混音、母带制作及声音设计。软件安装包小巧,支持多轨录制、灵活路由、自动化、第三方插件和脚本扩展,并提供完整功能的 60 天免费评估期。

    Adobe Audition Windows版
    Adobe Audition Windows版

    Adobe Audition 是面向播客、影视后期、广播与音乐制作的专业音频工作站,提供波形编辑、多轨混音、频谱分析、录音、降噪修复和效果处理等功能。Windows 版通过 Adobe Creative Cloud 安装和管理,

    Pro Tools Windows版
    Pro Tools Windows版

    Pro Tools 是 Avid 推出的专业数字音频工作站,提供多轨录音、音频剪辑、MIDI编曲、插件处理、自动化混音及影视声音制作能力。它适合音乐人、录音师、制作人和音频后期团队使用,并提供免费入门版、订阅方案及永久授权选择。