Postman入门指南

news2024/9/20 16:43:01

前言

当前最为主流的开发模式:前后端分离
在这里插入图片描述
在这种模式下,前端技术人员基于"接口文档",开发前端程序;后端技术人员也基于"接口文档",开发后端程序。

由于前后端分离,对我们后端技术人员来讲,在开发过程中,是没有前端页面的,那我们怎么测试自己所开发的程序呢?

如果是post请求,我们后端人员总不能再写一套前端测试页面来测试接口吧,因此就需要一款专业的接口测试工具,如Postman。

简介

Postman是一款广泛使用的API开发工具,它可以用来构建、测试和修改API。它不仅支持常见的HTTP请求类型(GET、POST、PUT等),还提供了一系列高级功能,如环境变量管理、自动化测试、API文档生成等。Postman适用于多种操作系统,包括Windows、macOS和Linux,并且还有浏览器扩展版本。

  • 作用
    接口测试
  • 特征
    • 简单
    • 实用
    • 美观
    • 大方

下载

  1. 点击Postman官方下载链接,点击Windows 64-bit下载
    在这里插入图片描述2. exe文件
    在这里插入图片描述

安装

  1. 双击exe文件
    在这里插入图片描述
    我们可以直接选择下面的lightweight API client,即轻量级接口:
    在这里插入图片描述
  2. 界面介绍
    在这里插入图片描述
    如果我们需要将测试的请求信息保存下来,就需要创建一个postman的账号,然后登录之后才可以

在这里插入图片描述
3. 注册账号
在这里插入图片描述

创建完账号后用这个账号登录

  1. 创建工作空间
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
5. 创建请求
在这里插入图片描述
在这里插入图片描述

  1. 保存请求
    在这里插入图片描述
    在这里插入图片描述

请求

简单参数

简单参数:在向服务器发起请求时,向服务器传递的是一些普通的请求数据。

那么在后端程序中,如何使用springboot接收传递过来的普通参数数据呢?
在Springboot的环境中,对原始的API进行了封装,接收参数的形式更加简单。 如果是简单参数,参数名与形参变量名相同,定义同名的形参即可接收参数。

  1. 代码
package org.example.springbootwebquickstart.controller;

import org.springframework.web.bind.annotation.*;

@RestController
public class RequestController {
    // http://localhost:8080/simpleParam?name=Tom&age=10
    // 第1个请求参数: name=Tom   参数名:name,参数值:Tom
    // 第2个请求参数: age=10     参数名:age , 参数值:10

    //springboot方式
    @RequestMapping("/simpleParam")
    public String simpleParam(String name, Integer age) {//形参名和请求参数名保持一致
        System.out.println(name + "  :  " + age);
        return "OK";
    }
}

  1. postman测试( GET 请求)

在这里插入图片描述

  1. postman测试( POST请求 )
    在这里插入图片描述
    在这里插入图片描述

结论:不论是GET请求还是POST请求,对于简单参数来讲,只要保证请求参数名和Controller方法中的形参名保持一致,就可以获取到请求参数中的数据值。

  1. 参数名不一致
    如果方法形参名称与请求参数名称不一致,controller方法中的形参还能接收到请求参数值吗?
@RestController
public class RequestController {
    // http://localhost:8080/simpleParam?name=Tom&age=20
    // 请求参数名:name

    //springboot方式
    @RequestMapping("/simpleParam")
    public String simpleParam(String username , Integer age ){//请求参数名和形参名不相同
        System.out.println(username+"  :  "+age);
        return "OK";
    }
}

答案:运行没有报错。 controller方法中的username值为:null,age值为20

在这里插入图片描述

结论:对于简单参数来讲,请求参数名和controller方法中的形参名不一致时,无法接收到请求数据

那么如果我们开发中,遇到了这种请求参数名和controller方法中的形参名不相同,怎么办?

解决方案:可以使用Spring提供的@RequestParam注解完成映射

在方法形参前面加上 @RequestParam 然后通过value属性执行请求参数名,从而完成映射。代码如下:

@RestController
public class RequestController {
    // http://localhost:8080/simpleParam?name=Tom&age=20
    // 请求参数名:name

    //springboot方式
    @RequestMapping("/simpleParam")
    public String simpleParam(@RequestParam("name") String username , Integer age ){
        System.out.println(username+"  :  "+age);
        return "OK";
    }
}

在这里插入图片描述

注意事项:
@RequestParam中的required属性默认为true(默认值也是true),代表该请求参数必须传递,如果> 不传递将报错
在这里插入图片描述
如果该参数是可选的,可以将required属性设置为false

实体参数

在使用简单参数做为数据传递方式时,前端传递了多少个请求参数,后端controller方法中的形参就要书写多少个。如果请求参数比较多,通过上述的方式一个参数一个参数的接收,会比较繁琐。

此时,我们可以考虑将请求参数封装到一个实体类对象中。 要想完成数据封装,需要遵守如下规则:请求参数名与实体类的属性名相同

  1. 实体简单对象
    定义POJO实体类:
public class User {
    private String name;
    private Integer age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

Controller方法:

@RestController
public class RequestController {
    //实体参数:简单实体对象
    @RequestMapping("/simplePojo")
    public String simplePojo(User user){
        System.out.println(user);
        return "OK";
    }
}

Postman测试:

  • 参数名和实体类属性名一致时
    在这里插入图片描述
  • 参数名和实体类属性名不一致时
    在这里插入图片描述
    在这里插入图片描述
  1. 复杂实体对象
    复杂实体对象指的是,在实体类中有一个或多个属性,也是实体对象类型的。如下:
  • User类中有一个Address类型的属性(Address是一个实体类)

复杂实体对象的封装,需要遵守如下规则:

  • 请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套实体类属性参数。

定义POJO实体类:

  • Address实体类
public class Address {
    private String province;
    private String city;

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    @Override
    public String toString() {
        return "Address{" +
                "province='" + province + '\'' +
                ", city='" + city + '\'' +
                '}';
    }
}
  • User实体类
public class User {
    private String name;
    private Integer age;
    private Address address; //地址对象

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", address=" + address +
                '}';
    }
}

Controller方法:

@RestController
public class RequestController {
    //实体参数:复杂实体对象
    @RequestMapping("/complexPojo")
    public String complexPojo(User user){
        System.out.println(user);
        return "OK";
    }
}

Postman测试:
在这里插入图片描述

在这里插入图片描述

  1. 数组集合参数
    数组集合参数的使用场景:在HTML的表单中,有一个表单项是支持多选的(复选框),可以提交选择的多个值。

在这里插入图片描述

多个值是怎么提交的呢?其实多个值也是一个一个的提交。
后端程序接收上述多个值的方式有两种:

  • 数组
  • 集合
  1. 数组
    数组参数:请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数

Controller方法:

@RestController
public class RequestController {
    //数组集合参数
    @RequestMapping("/arrayParam")
    public String arrayParam(String[] hobby){
        System.out.println(Arrays.toString(hobby));
        return "OK";
    }
}

Postman测试:
在前端请求时,有两种传递形式:

方式一: xxxxxxxxxx?hobby=game&hobby=java
在这里插入图片描述

方式二:xxxxxxxxxxxxx?hobby=game,java
在这里插入图片描述

  1. 集合
    集合参数:请求参数名与形参集合对象名相同且请求参数为多个,@RequestParam 绑定参数关系

    默认情况下,请求中参数名相同的多个值,是封装到数组。如果要封装到集合,要使用@RequestParam绑定参数关系

Controller方法:

@RestController
public class RequestController {
    //数组集合参数
    @RequestMapping("/listParam")
    public String listParam(@RequestParam List<String> hobby){
        System.out.println(hobby);
        return "OK";
    }
}

Postman测试:

方式一: xxxxxxxxxx?hobby=game&hobby=java
在这里插入图片描述
方式二:xxxxxxxxxxxxx?hobby=game,java
在这里插入图片描述

  1. 日期参数
    在一些特殊的需求中,可能会涉及到日期类型数据的封装。
    因为日期的格式多种多样(如:2022-12-12 10:05:45 、2022/12/12 10:05:45),那么对于日期类型的参数在进行封装的时候,需要通过@DateTimeFormat注解,以及其pattern属性来设置日期的格式。
  • @DateTimeFormat注解的pattern属性中指定了哪种日期格式,前端的日期参数就必须按照指定的格式传递。
  • 后端controller方法中,需要使用Date类型或LocalDateTime类型,来封装传递的参数。

Controller方法:

@RestController
public class RequestController {
    //日期时间参数
   @RequestMapping("/dateParam")
    public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime){
        System.out.println(updateTime);
        return "OK";
    }
}

Postman测试:
在这里插入图片描述
5. JSON参数
在前后端进行交互时,如果是比较复杂的参数,前后端通过会使用JSON格式的数据进行传输。 (JSON是开发中最常用的前后端数据交互方式)

我们学习JSON格式参数,主要从以下两个方面着手:

  • Postman在发送请求时,如何传递json格式的请求参数
  • 在服务端的controller方法中,如何接收json格式的请求参数

Postman发送JSON格式数据:
在这里插入图片描述
服务端Controller方法接收JSON格式数据:

  • 传递json格式的参数,在Controller中会使用实体类进行封装。
  • 封装规则:**JSON数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数。需要使用 @RequestBody标识。
  • @RequestBody注解:将JSON数据映射到形参的实体类对象中(JSON中的key和实体类中的属性名保持一致)

实体类:Address

public class Address {
    private String province;
    private String city;

    //省略GET , SET 方法
}

实体类:User

public class User {
    private String name;
    private Integer age;
    private Address address;

    //省略GET , SET 方法
}    

Controller方法:

@RestController
public class RequestController {
    //JSON参数
    @RequestMapping("/jsonParam")
    public String jsonParam(@RequestBody User user){
        System.out.println(user);
        return "OK";
    }
}

Postman测试:
在这里插入图片描述
在这里插入图片描述

  1. 路径参数
    传统的开发中请求参数是放在请求体(POST请求)传递或跟在URL后面通过?key=value的形式传递(GET请求)。
    在现在的开发中,经常还会直接在请求的URL中传递参数。例如:
http://localhost:8080/user/1        
http://localhost:880/user/1/0

上述的这种传递请求参数的形式呢,我们称之为:路径参数。

学习路径参数呢,主要掌握在后端的controller方法中,如何接收路径参数。

路径参数:

  • 前端:通过请求URL直接传递参数
  • 后端:使用{…}来标识该路径参数,需要使用@PathVariable获取路径参数

Controller方法:

@RestController
public class RequestController {
    //路径参数
    @RequestMapping("/path/{id}")
    public String pathParam(@PathVariable Integer id){
        System.out.println(id);
        return "OK";
    }
}

Postman测试:
在这里插入图片描述
传递多个路径参数:

Controller方法:

@RestController
public class RequestController {
    //路径参数
    @RequestMapping("/path/{id}/{name}")
    public String pathParam2(@PathVariable Integer id, @PathVariable String name){
        System.out.println(id+ " : " +name);
        return "OK";
    }
}

Postman测试:
在这里插入图片描述

在这里插入图片描述

响应

HTTL协议的交互方式:请求响应模式(有请求就有响应)

那么Controller程序呢,除了接收请求外,还可以进行响应。

@ResponseBody

在我们前面所编写的controller方法中,都已经设置了响应数据。
在这里插入图片描述

controller方法中的return的结果,怎么就可以响应给浏览器呢?

答案:使用@ResponseBody注解

@ResponseBody注解:

  • 类型:方法注解、类注解
  • 位置:书写在Controller方法上或类上
  • 作用:将方法返回值直接响应给浏览器
    • 如果返回值类型是实体对象/集合,将会转换为JSON格式后在响应给浏览器

但是在我们所书写的Controller中,只在类上添加了@RestController注解、方法添加了@RequestMapping注解,并没有使用@ResponseBody注解,怎么给浏览器响应呢?

@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String hello(){
        System.out.println("Hello World ~");
        return "Hello World ~";
    }
}

原因:在类上添加的@RestController注解,是一个组合注解。

  • @RestController = @Controller + @ResponseBody

@RestController源码:

@Target({ElementType.TYPE})   //元注解(修饰注解的注解)
@Retention(RetentionPolicy.RUNTIME)  //元注解
@Documented    //元注解
@Controller   
@ResponseBody 
public @interface RestController {
    @AliasFor(
        annotation = Controller.class
    )
    String value() default "";
}

结论:在类上添加@RestController就相当于添加了@ResponseBody注解。

  • 类上有@RestController注解或@ResponseBody注解时:表示当前类下所有的方法返回值做为响应数据
    • 方法的返回值,如果是一个POJO对象或集合时,会先转换为JSON格式,在响应给浏览器

下面我们来测试下响应数据:

@RestController
public class ResponseController {
    //响应字符串
    @RequestMapping("/hello")
    public String hello(){
        System.out.println("Hello World ~");
        return "Hello World ~";
    }
    //响应实体对象
    @RequestMapping("/getAddr")
    public Address getAddr(){
        Address addr = new Address();//创建实体类对象
        addr.setProvince("广东");
        addr.setCity("深圳");
        return addr;
    }
    //响应集合数据
    @RequestMapping("/listAddr")
    public List<Address> listAddr(){
        List<Address> list = new ArrayList<>();//集合对象

        Address addr = new Address();
        addr.setProvince("广东");
        addr.setCity("深圳");

        Address addr2 = new Address();
        addr2.setProvince("陕西");
        addr2.setCity("西安");

        list.add(addr);
        list.add(addr2);
        return list;
    }
}

在服务端响应了一个对象或者集合,那私前端获取到的数据是什么样子的呢?我们使用postman发送请求来测试下。测试效果如下:

在这里插入图片描述

统一响应结果

大家有没有发现一个问题,我们在前面所编写的这些Controller方法中,返回值各种各样,没有任何的规范。
在这里插入图片描述

如果我们开发一个大型项目,项目中controller方法将成千上万,使用上述方式将造成整个项目难以维护。那在真实的项目开发中是什么样子的呢?

在真实的项目开发中,无论是哪种方法,我们都会定义一个统一的返回结果。方案如下:
在这里插入图片描述

前端:只需要按照统一格式的返回结果进行解析(仅一种解析方案),就可以拿到数据。

统一的返回结果使用类来描述,在这个结果中包含:

  • 响应状态码:当前请求是成功,还是失败

  • 状态码信息:给页面的提示信息

  • 返回的数据:给前端响应的数据(字符串、对象、集合)

定义在一个实体类Result来包含以上信息。代码如下:

public class Result {
    private Integer code;//响应码,1 代表成功; 0 代表失败
    private String msg;  //响应码 描述字符串
    private Object data; //返回的数据

    public Result() { }
    public Result(Integer code, String msg, Object data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }

    //增删改 成功响应(不需要给前端返回数据)
    public static Result success(){
        return new Result(1,"success",null);
    }
    //查询 成功响应(把查询结果做为返回数据响应给前端)
    public static Result success(Object data){
        return new Result(1,"success",data);
    }
    //失败响应
    public static Result error(String msg){
        return new Result(0,msg,null);
    }
}

改造Controller:

@RestController
public class ResponseController { 
    //响应统一格式的结果
    @RequestMapping("/hello")
    public Result hello(){
        System.out.println("Hello World ~");
        //return new Result(1,"success","Hello World ~");
        return Result.success("Hello World ~");
    }

    //响应统一格式的结果
    @RequestMapping("/getAddr")
    public Result getAddr(){
        Address addr = new Address();
        addr.setProvince("广东");
        addr.setCity("深圳");
        return Result.success(addr);
    }

    //响应统一格式的结果
    @RequestMapping("/listAddr")
    public Result listAddr(){
        List<Address> list = new ArrayList<>();

        Address addr = new Address();
        addr.setProvince("广东");
        addr.setCity("深圳");

        Address addr2 = new Address();
        addr2.setProvince("陕西");
        addr2.setCity("西安");

        list.add(addr);
        list.add(addr2);
        return Result.success(list);
    }
}

使用Postman测试:
在这里插入图片描述

总结

工欲善其事,必先利其器,学习javaweb之前需要把常用的软件熟练使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2042750.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PHP 无参数RCE总结

在这篇文章中&#xff0c;我总结了在参与CTF比赛过程中积累的关于PHP无参数远程代码执行&#xff08;RCE&#xff09;的经验。由于一直以来时间有限&#xff0c;今天终于有机会整理这些知识点。 可能用到的函数&#xff08;PHP的内置函数&#xff09; localeconv() 函数返回一…

String 事务

目录 一、什么是事务 二、Spring事务的实现方式 1、编程式事务 2、声明式事务 三、自动操作事务的注解的三个属性 1、rollbackFor 2、isolation 3、propagation 前言&#xff1a;本文所见围绕的主题是事务&#xff0c;所以笔者先讲解什么是事务&#xff0c;先让大家了解…

Selenium + Python 自动化测试15(模块化测试)

我们的目标是&#xff1a;按照这一套资料学习下来&#xff0c;大家可以独立完成自动化测试的任务。 上一篇我们讨论了使用SMTP 对象的sendmail 发送HTML报告的方法。 本篇文章我们接着讲测试代码的一些优化&#xff0c;提高我们测试代码的易读性&#xff0c;维护方便性。大家也…

ZooKeeper 集群的详细部署

ZooKeeper 集群部署 一、ZooKeeper 简介1.1 什么是 ZooKeeper1.2 ZooKeeper 特点 二 ZooKeeper 的架构和设计4.1 ZooKeeper 数据模型4.1.1 Znode 节点特性 三、ZooKeeper 的集群安装前准备工作3.1 需要的准备工作3.2 Linux 系统 3 个节点准备3.2.1 克隆3.2.2 配置另外两台服务器…

评论系统如何不崩溃?揭开海量评论背后的技术秘密

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! 大家好,我是小米!今天我们来聊聊一个非常实际的场景:海量新闻评论的入库问题。假设你在某个新闻平台工作,某条热门新闻突然火爆,用户的评论量如潮水…

SpringBoot Web开发(请求,响应,分层解耦)

Author_T17&#x1f965; 目录 一.请求响应概述 1.Servlet 2.DispatcherServlet 3.请求响应工作概图 4.BS/CS架构 二.API测试工具 三.请求 1.简单参数 &#xff08;1&#xff09;原始方式&#xff08;不推荐&#xff09; ​编辑 &#xff08;2&#xff09;Spring Boo…

【剑指 offer】删除链表中重复的结点

目 录 描述: 在一个排序的链表中&#xff0c;存在重复的结点&#xff0c;请删除该链表中重复的结点&#xff0c;重复的结点不保留&#xff0c;返回链表头指针。 例如&#xff0c;链表 1->2->3->3->4->4->5 处理后为 1->2->5 思路&#xff1a; 通过快慢…

2024年阳光电源社招校招入职测评:前程无忧智鼎题库全解析

在职场竞争日益激烈的今天&#xff0c;企业对人才的选拔标准越来越高。阳光电源&#xff0c;作为行业的领军企业&#xff0c;采用了前程无忧智鼎题库进行社招校招入职测评&#xff0c;旨在通过科学的方法选拔出与企业文化和价值观高度契合的人才。 测评概览 测评名称&#xff1…

大模型RAG企业级项目实战:Chatdoc智能助手文档(从零开始,适合新手)

大模型RAG企业级项目实战&#xff1a;Chatdoc智能助手文档&#xff08;从零开始&#xff0c;适合新手&#xff09; 大模型RAG企业级项目实战完整链接 LLM模型缺陷&#xff1a; ​ 知识是有局限性的(缺少垂直领域/非公开知识/数据安全) ​ 知识实时性(训练周期长、成本高) …

5计算机网络全面解析

网络功能和分类 计算机网络是计算机技术与通信技术相结合的产物&#xff0c;它实现了远程通信、远程信息处理和资源共享。 计算机网络的功能&#xff1a;数据通信、资源共享、管理集中化、实现分布式处理、负载均衡。 网络性能指标&#xff1a;速率、带宽&#xff08;频带宽…

1.微服务发展阶段

单体应用阶段 简介 系统业务量很小的时候我们把所有的代码都放在一个项目中&#xff0c;然后将这个项目部署在一台服务器上&#xff0c;整个项目所有的服务都由这台服务器去提供 优点 1.展现层、控制层、持久层全都在一个应用里面&#xff0c;调用方便、快速&#xff0c;单个请…

Unity URP 曲面细分学习笔记

Unity URP 曲面细分学习笔记 1.曲面细分与镶嵌1.1 外壳着色器 Hull Shader1.2 镶嵌器阶段 Tessellator1.3 域着色器阶段 Domain Shader 2.具体实现2.1 不同的细分策略2.1.1 平面镶嵌 Flat Tessellation2.1.2 PN Tessellation&#xff08;Per-Node Tessellation&#xff09;2.1.…

NPM使用教程:从入门到精通

NPM使用教程&#xff1a;从入门到精通&#xff0c;掌握Node.js包管理神器 引言 随着Node.js的流行&#xff0c;JavaScript已经成为服务器端开发的主力军。NPM&#xff08;Node Package Manager&#xff09;作为Node.js的官方包管理工具&#xff0c;为开发者提供了一个庞大的代…

用R的界面来安装扩展包

下面内容摘录自《R 语言与数据科学的终极指南》专栏文章的部分内容&#xff0c;每篇文章都在 5000 字以上&#xff0c;质量平均分高达 94 分&#xff0c;看全文请点击下面链接&#xff1a; 2章4节&#xff1a;认识和安装R的扩展包&#xff0c;什么是模糊搜索安装&#xff0c;工…

Linux高级编程 8.12 标准IO

目录 一、标准io 二、文件 三、man手册 四、操作文件 1.fopen 2.fputc 3.fgetc 4.fgets 5.fputs 6.fread 7.fwrite 五、命令解读 1.显示目录下的文件信息命令 2.vimdiff小工具 3.stat命令 一、标准io IO&#xff1a; input output I&#xff1a; 键盘是标准输…

吃透张宇18讲+1000题,最后能考到110+吗?

张宇18讲太难了怎么办&#xff1f; 当然是换一本 不难的&#xff0c;张宇18讲的难度确实超过大多数同学能够接受的程度&#xff0c;张宇老师也说&#xff0c;默认大家基础已经很好&#xff0c;所以&#xff0c;如果你想很好的利用张宇18讲&#xff0c;必须要有一个一个很好的基…

ViT——探索自监督视觉Transformers在深度伪造检测中的应用

介绍 论文地址&#xff1a;https://arxiv.org/abs/2405.00355 在这篇评论文章中&#xff0c;我们研究了自监督、预训练Transformers与监督、预训练Transformers和传统神经网络&#xff08;ConvNets&#xff09;相比&#xff0c;在检测深度伪造方面的效果如何。 我们尤其关注…

开源的 P2P 跨平台传文件应用「GitHub 热点速览」

就在上周&#xff0c;发完那篇文章之后不久&#xff0c;我就有幸获得了 GitHub Models 服务公测的访问权限&#xff0c;所以就体验了一下 Playground 聊天功能。 起初&#xff0c;我以为这是“微软菩萨”降临&#xff0c;但玩了一圈下来&#xff0c;发现实际效果并没有那么惊艳…

❤️【接口测试面试】精选50接口测试面试题目,或许能帮到金九银十面试浪潮中的你❤️

基本理论知识 1、什么是(软件)接口测试? 接口测试&#xff1a;是测试系统组件间接口的一种测试方法 接口测试的重点&#xff1a;检查数据的交换&#xff0c;数据传递的正确性&#xff0c;以及接口间的逻辑依赖关系 接口测试的意义&#xff1a;在较早期开展&#xff0c;在软…

iPhone官方商店软件下载---免费看各种剧第⑤弹【iOS版包括iPad】

①点击iPhone自带软件App Store ②点击搜索&#xff0c;输入“周末趣味活动” &#xff0c;点击下载到手机 ③进入软件页面后&#xff0c;我们需要激活页面&#xff0c;点击“feedback” &#xff0c;输入“周六日”&#xff0c;点击“summit” ④等软件闪退后&#xff0c;再点…